}
/* 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);
}