diff options
Diffstat (limited to 'Zend/zend_API.c')
-rw-r--r-- | Zend/zend_API.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/Zend/zend_API.c b/Zend/zend_API.c index f1f6a75e50..daa938a302 100644 --- a/Zend/zend_API.c +++ b/Zend/zend_API.c @@ -531,12 +531,13 @@ ZEND_API int ZEND_FASTCALL zend_parse_arg_str_weak(zval *arg, zend_string **dest zval rv; zval *z = Z_OBJ_HANDLER_P(arg, get)(arg, &rv); - Z_ADDREF_P(z); if (Z_TYPE_P(z) != IS_OBJECT) { - zval_dtor(arg); - ZVAL_NULL(arg); - if (!zend_make_printable_zval(z, arg)) { + zval_ptr_dtor(arg); + if (Z_TYPE_P(z) == IS_STRING) { ZVAL_COPY_VALUE(arg, z); + } else { + ZVAL_STR(arg, zval_get_string_func(z)); + zval_ptr_dtor(z); } *dest = Z_STR_P(arg); return 1; |