diff options
Diffstat (limited to 'Zend/zend_execute.c')
| -rw-r--r-- | Zend/zend_execute.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index b18a8ef27d..e6e7ac3d8e 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -1217,19 +1217,16 @@ binary_assign_op_addr: { case ZEND_ADD_VAR: { zval *var = get_zval_ptr(&opline->op2, Ts, &free_op2, BP_VAR_R); zval var_copy; - int destroy=0; + int use_copy; - if (var->type != IS_STRING) { - var_copy = *var; - zval_copy_ctor(&var_copy); + zend_make_printable_zval(var, &var_copy, &use_copy); + if (use_copy) { var = &var_copy; - convert_to_string(var); - destroy=1; } add_string_to_string( &Ts[opline->result.u.var].tmp_var, get_zval_ptr(&opline->op1, Ts, &free_op1, BP_VAR_NA), var); - if (destroy) { + if (use_copy) { zval_dtor(var); } /* original comment, possibly problematic: |
