From 46647180ef05c797cf2d79b6a80b367028ccaa93 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 1 Apr 2014 11:29:22 +0400 Subject: [PATCH] function_name might be shared across few op_arrays (inherited methods) --- ext/opcache/zend_persist_calc.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/ext/opcache/zend_persist_calc.c b/ext/opcache/zend_persist_calc.c index 51b48ecee0..089b09b4ad 100644 --- a/ext/opcache/zend_persist_calc.c +++ b/ext/opcache/zend_persist_calc.c @@ -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 && -- 2.40.0