From: Dmitry Stogov Date: Tue, 10 Oct 2017 16:37:40 +0000 (+0300) Subject: Merge branch 'PHP-7.2' X-Git-Tag: php-7.3.0alpha1~1297 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=70b2ec58744f372141de434184b4ce12b0c7bf32;p=php Merge branch 'PHP-7.2' * PHP-7.2: Fixed cleanup after optimization passes --- 70b2ec58744f372141de434184b4ce12b0c7bf32 diff --cc ext/opcache/Optimizer/compact_vars.c index 016fbfffbc,caf121942d..7bcf0b8a28 --- a/ext/opcache/Optimizer/compact_vars.c +++ b/ext/opcache/Optimizer/compact_vars.c @@@ -105,21 -93,26 +105,29 @@@ void zend_optimizer_compact_vars(zend_o } /* Update CV name table */ - if (num_cvs) { - zend_string **names = safe_emalloc(sizeof(zend_string *), num_cvs, 0); - for (i = 0; i < op_array->last_var; i++) { - if (cv_map[i] != (uint32_t) -1) { - names[cv_map[i]] = op_array->vars[i]; - } else { + if (num_cvs != op_array->last_var) { - zend_string **names = safe_emalloc(sizeof(zend_string *), num_cvs, 0); - for (i = 0; i < op_array->last_var; i++) { - if (vars_map[i] != (uint32_t) -1) { - names[vars_map[i]] = op_array->vars[i]; - } else { ++ if (num_cvs) { ++ zend_string **names = safe_emalloc(sizeof(zend_string *), num_cvs, 0); ++ for (i = 0; i < op_array->last_var; i++) { ++ if (vars_map[i] != (uint32_t) -1) { ++ names[vars_map[i]] = op_array->vars[i]; ++ } else { ++ zend_string_release(op_array->vars[i]); ++ } ++ } ++ efree(op_array->vars); ++ op_array->vars = names; ++ } else { ++ for (i = 0; i < op_array->last_var; i++) { zend_string_release(op_array->vars[i]); } ++ efree(op_array->vars); ++ op_array->vars = NULL; } -- efree(op_array->vars); -- op_array->vars = names; - } else { - for (i = 0; i < op_array->last_var; i++) { - zend_string_release(op_array->vars[i]); - } - efree(op_array->vars); - op_array->vars = NULL; ++ op_array->last_var = num_cvs; } -- op_array->last_var = num_cvs; + op_array->T = num_tmps; - free_alloca(cv_map, use_heap2); + free_alloca(vars_map, use_heap2); }