]> granicus.if.org Git - php/commitdiff
Only destruct if EG(active) in zend_shutdown(). (bug #65463, #66036)
authorKeyur Govande <keyur_govande@yahoo.com>
Sat, 23 Aug 2014 14:17:37 +0000 (14:17 +0000)
committerKeyur Govande <keyur_govande@yahoo.com>
Sat, 23 Aug 2014 14:17:37 +0000 (14:17 +0000)
Zend/zend.c

index e0f400ab223757f2d38777c375ab376c858bf433..35f215f3201adacb3c12dcc95a6063fc22754f61 100644 (file)
@@ -818,15 +818,18 @@ void zend_shutdown(TSRMLS_D) /* {{{ */
 #endif
        zend_destroy_rsrc_list(&EG(persistent_list) TSRMLS_CC);
 
-       /*
-        * The order of destruction is important here.
-        * See bugs #65463 and 66036.
-        */
-       zend_hash_reverse_apply(GLOBAL_FUNCTION_TABLE, (apply_func_t) zend_cleanup_function_data_full TSRMLS_CC);
-       zend_hash_reverse_apply(GLOBAL_CLASS_TABLE, (apply_func_t) zend_cleanup_user_class_data TSRMLS_CC);
-       zend_cleanup_internal_classes(TSRMLS_C);
-       zend_hash_reverse_apply(GLOBAL_FUNCTION_TABLE, (apply_func_t) clean_non_persistent_function_full TSRMLS_CC);
-       zend_hash_reverse_apply(GLOBAL_CLASS_TABLE, (apply_func_t) clean_non_persistent_class_full TSRMLS_CC);
+       if (EG(active))
+       {
+               /*
+                * The order of destruction is important here.
+                * See bugs #65463 and 66036.
+                */
+               zend_hash_reverse_apply(GLOBAL_FUNCTION_TABLE, (apply_func_t) zend_cleanup_function_data_full TSRMLS_CC);
+               zend_hash_reverse_apply(GLOBAL_CLASS_TABLE, (apply_func_t) zend_cleanup_user_class_data TSRMLS_CC);
+               zend_cleanup_internal_classes(TSRMLS_C);
+               zend_hash_reverse_apply(GLOBAL_FUNCTION_TABLE, (apply_func_t) clean_non_persistent_function_full TSRMLS_CC);
+               zend_hash_reverse_apply(GLOBAL_CLASS_TABLE, (apply_func_t) clean_non_persistent_class_full TSRMLS_CC);
+       }
 
        zend_destroy_modules();