]> granicus.if.org Git - php/commitdiff
function_name might be shared across few op_arrays (inherited methods)
authorDmitry Stogov <dmitry@zend.com>
Tue, 1 Apr 2014 07:29:22 +0000 (11:29 +0400)
committerDmitry Stogov <dmitry@zend.com>
Tue, 1 Apr 2014 07:29:22 +0000 (11:29 +0400)
ext/opcache/zend_persist_calc.c

index 51b48ecee04dd0ad183d5baabaac5436b9b643e3..089b09b4add882fc05fcf88828252714286677d5 100644 (file)
@@ -190,7 +190,15 @@ static uint zend_persist_op_array_calc_ex(zend_op_array *op_array TSRMLS_DC)
        }
 
        if (op_array->function_name) {
-               ADD_INTERNED_STRING(op_array->function_name, 0);
+               zend_string *old_name = op_array->function_name;
+               zend_string *new_name = zend_shared_alloc_get_xlat_entry(old_name);
+
+               if (new_name) {
+                       op_array->function_name = new_name;
+               } else {
+                       ADD_INTERNED_STRING(op_array->function_name, 0);
+                       zend_shared_alloc_register_xlat_entry(old_name, op_array->function_name);
+               }
     }
 
        if (op_array->arg_info &&