Index: trunk/xcache.c
===================================================================
--- trunk/xcache.c	(revision 1134)
+++ trunk/xcache.c	(revision 1163)
@@ -561,5 +561,6 @@
 } xc_incompatible_zend_extension_info_t;
 static xc_incompatible_zend_extension_info_t xc_incompatible_zend_extensions[] = {
-	{ "Zend Optimizer", NULL }
+	{ "Zend Optimizer", NULL },
+	{ "the ionCube PHP Loader", NULL }
 };
 
@@ -584,9 +585,4 @@
 	zend_bool catched = 0;
 	zend_llist old_zend_extensions = zend_extensions;
-	TSRMLS_FETCH();
-
-	/* hide all extensions from it */
-	zend_extensions.head = NULL;
-	zend_extensions.count = 0;
 
 	/* restore */
@@ -595,4 +591,13 @@
 	assert(extension->startup);
 
+	/* hide all extensions from it */
+	zend_extensions.head = NULL;
+	zend_extensions.tail = NULL;
+	zend_extensions.count = 0;
+	zend_extensions.dtor = NULL;
+	zend_llist_add_element(&zend_extensions, extension);
+	extension = zend_get_extension(extension->name);
+
+	assert(extension->startup != xc_incompatible_zend_extension_startup_hook);
 	zend_try {
 		status = extension->startup(extension);
@@ -601,4 +606,5 @@
 	} zend_end_try();
 
+	/* restore */
 	zend_extensions = old_zend_extensions;
 	if (catched) {
