]> granicus.if.org Git - php/commitdiff
Fixed usage after free
authorDmitry Stogov <dmitry@zend.com>
Wed, 30 Jul 2014 06:39:25 +0000 (10:39 +0400)
committerDmitry Stogov <dmitry@zend.com>
Wed, 30 Jul 2014 06:39:25 +0000 (10:39 +0400)
ext/opcache/zend_accelerator_util_funcs.c

index dbab902b26f17fb11c5eb917f97f8924972e5447..a0bc76d994c81a2025110fb324312ebb47fe5f27 100644 (file)
@@ -979,7 +979,6 @@ zend_op_array* zend_accel_load_script(zend_persistent_script *persistent_script,
                if (zend_hash_num_elements(&persistent_script->class_table) > 0) {
                        zend_accel_class_hash_copy(CG(class_table), &persistent_script->class_table, NULL TSRMLS_CC);
                }
-               free_persistent_script(persistent_script, 0); /* free only hashes */
        }
 
 #if ZEND_EXTENSION_API_NO >= PHP_5_3_X_API_NO
@@ -991,6 +990,10 @@ zend_op_array* zend_accel_load_script(zend_persistent_script *persistent_script,
        }
 #endif
 
+       if (!from_shared_memory) {
+               free_persistent_script(persistent_script, 0); /* free only hashes */
+       }
+
        return op_array;
 }