diff options
Diffstat (limited to 'Zend/zend_execute.c')
-rw-r--r-- | Zend/zend_execute.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index 722b6148f7..f7083765b9 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -3299,9 +3299,17 @@ int zend_cast_handler(ZEND_OPCODE_HANDLER_ARGS) case IS_DOUBLE: convert_to_double(result); break; - case IS_STRING: - convert_to_string(result); + case IS_STRING: { + zval var_copy; + int use_copy; + + zend_make_printable_zval(result, &var_copy, &use_copy); + if (use_copy) { + zval_dtor(result); + *result = var_copy; + } break; + } case IS_ARRAY: convert_to_array(result); break; |