Index: trunk/xcache.c
===================================================================
--- trunk/xcache.c	(revision 956)
+++ trunk/xcache.c	(revision 957)
@@ -746,5 +746,5 @@
 /* }}} */
 
-static zend_op_array *xc_entry_install(xc_entry_php_t *entry_php, zend_file_handle *h TSRMLS_DC) /* {{{ */
+static zend_op_array *xc_entry_install(xc_entry_php_t *entry_php TSRMLS_DC) /* {{{ */
 {
 	zend_uint i;
@@ -818,7 +818,4 @@
 	zend_hash_add(&EG(included_files), entry_php->entry.name.str.val, entry_php->entry.name.str.len+1, (void *)&i, sizeof(int), NULL);
 #endif
-	if (h) {
-		zend_llist_add_element(&CG(open_files), h);
-	}
 
 #ifndef ZEND_ENGINE_2
@@ -1845,5 +1842,5 @@
 }
 /* }}} */
-static zend_op_array *xc_compile_restore(xc_entry_php_t *stored_entry, xc_entry_data_php_t *stored_php, zend_file_handle *h TSRMLS_DC) /* {{{ */
+static zend_op_array *xc_compile_restore(xc_entry_php_t *stored_entry, xc_entry_data_php_t *stored_php TSRMLS_DC) /* {{{ */
 {
 	zend_op_array *op_array;
@@ -1865,5 +1862,5 @@
 	catched = 0;
 	zend_try {
-		op_array = xc_entry_install(&restored_entry, h TSRMLS_CC);
+		op_array = xc_entry_install(&restored_entry TSRMLS_CC);
 	} zend_catch {
 		catched = 1;
@@ -1978,4 +1975,7 @@
 
 	if (stored_entry) {
+		sandboxed_compiler->stored_entry = stored_entry;
+		sandboxed_compiler->stored_php = stored_php;
+		/* discard newly compiled result, restore from stored one */
 		if (compiler->new_php.op_array) {
 #ifdef ZEND_ENGINE_2
@@ -1986,13 +1986,8 @@
 			efree(compiler->new_php.op_array);
 			compiler->new_php.op_array = NULL;
-			sandboxed_compiler->h = NULL;
-		}
-		sandboxed_compiler->stored_entry = stored_entry;
-		sandboxed_compiler->stored_php = stored_php;
-		/* sandbox no install */
+		}
 		return NULL;
 	}
 	else {
-		/* install it with sandbox */
 		return compiler->new_php.op_array;
 	}
@@ -2123,5 +2118,6 @@
 	/* found entry */
 	if (stored_entry && stored_php) {
-		return xc_compile_restore(stored_entry, stored_php, NULL /* h */ TSRMLS_CC);
+		zend_llist_add_element(&CG(open_files), h);
+		return xc_compile_restore(stored_entry, stored_php TSRMLS_CC);
 	}
 
@@ -2139,5 +2135,5 @@
 	op_array = xc_sandbox(xc_compile_file_sandboxed, (void *) &sandboxed_compiler, h->opened_path ? h->opened_path : h->filename TSRMLS_CC);
 	if (sandboxed_compiler.stored_entry) {
-		return xc_compile_restore(sandboxed_compiler.stored_entry, sandboxed_compiler.stored_php, sandboxed_compiler.h TSRMLS_CC);
+		return xc_compile_restore(sandboxed_compiler.stored_entry, sandboxed_compiler.stored_php TSRMLS_CC);
 	}
 	else {
@@ -2166,7 +2162,6 @@
 #endif
 	 ) {
-		op_array = old_compile_file(h, type TSRMLS_CC);
 		TRACE("%s", "cacher not enabled");
-		return op_array;
+		return old_compile_file(h, type TSRMLS_CC);
 	}
 
