diff options
author | Dmitry Stogov <dmitry@php.net> | 2007-05-18 13:12:05 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2007-05-18 13:12:05 +0000 |
commit | 80d2409fd8fe382ea14d6b45c528a452fa796905 (patch) | |
tree | 44778367be88f63311c5877535370652e3d82946 /Zend/zend_vm_execute.h | |
parent | 6d41d020dfd2f84618357909232007c6ab3451f1 (diff) | |
download | php-git-80d2409fd8fe382ea14d6b45c528a452fa796905.tar.gz |
Improved compilation of heredocs and interpolated strings. (Matt, Dmitry)
Diffstat (limited to 'Zend/zend_vm_execute.h')
-rw-r--r-- | Zend/zend_vm_execute.h | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 5cc340cea6..0307dae993 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -5660,11 +5660,14 @@ static int ZEND_ADD_VAR_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_free_op free_op1, free_op2; zval *var = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); zval var_copy; - int use_copy; + int use_copy = 0; - zend_make_printable_zval(var, &var_copy, &use_copy); - if (use_copy) { - var = &var_copy; + if (Z_TYPE_P(var) != IS_STRING) { + zend_make_printable_zval(var, &var_copy, &use_copy); + + if (use_copy) { + var = &var_copy; + } } add_string_to_string( &EX_T(opline->result.u.var).tmp_var, _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC), @@ -6102,11 +6105,14 @@ static int ZEND_ADD_VAR_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_free_op free_op1, free_op2; zval *var = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); zval var_copy; - int use_copy; + int use_copy = 0; - zend_make_printable_zval(var, &var_copy, &use_copy); - if (use_copy) { - var = &var_copy; + if (Z_TYPE_P(var) != IS_STRING) { + zend_make_printable_zval(var, &var_copy, &use_copy); + + if (use_copy) { + var = &var_copy; + } } add_string_to_string( &EX_T(opline->result.u.var).tmp_var, _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC), @@ -6637,11 +6643,14 @@ static int ZEND_ADD_VAR_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zend_free_op free_op1; zval *var = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); zval var_copy; - int use_copy; + int use_copy = 0; - zend_make_printable_zval(var, &var_copy, &use_copy); - if (use_copy) { - var = &var_copy; + if (Z_TYPE_P(var) != IS_STRING) { + zend_make_printable_zval(var, &var_copy, &use_copy); + + if (use_copy) { + var = &var_copy; + } } add_string_to_string( &EX_T(opline->result.u.var).tmp_var, _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC), |