Index: trunk/xcache.c
===================================================================
--- trunk/xcache.c	(revision 1164)
+++ trunk/xcache.c	(revision 1172)
@@ -585,4 +585,8 @@
 	zend_bool catched = 0;
 	zend_llist old_zend_extensions = zend_extensions;
+#if TODO
+	zend_llist_position lpos;
+	zend_extension *ext;
+#endif
 	TSRMLS_FETCH();
 
@@ -597,4 +601,13 @@
 	zend_extensions.count = 0;
 	zend_extensions.dtor = NULL;
+#if TODO
+	for (ext = (zend_extension *) zend_llist_get_first_ex(&old_zend_extensions, &lpos);
+			ext;
+			ext = (zend_extension *) zend_llist_get_next_ex(&old_zend_extensions, &lpos)) {
+		if (!(strcmp(ext->name, XCACHE_NAME) == 0 || strncmp(ext->name, XCACHE_NAME " ", sizeof(XCACHE_NAME " ") - 1) == 0)) {
+			zend_llist_add_element(&zend_extensions, ext);
+		}
+	}
+#endif
 	zend_llist_add_element(&zend_extensions, extension);
 	extension = zend_get_extension(extension->name);
@@ -608,5 +621,5 @@
 
 	/* restore */
-	zend_llist_remove_tail(&zend_extensions);
+	zend_llist_destroy(&zend_extensions);
 	zend_extensions = old_zend_extensions;
 	if (catched) {
