From 41db5f73ce452f4135c61419b6535245dd1e724c Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Fri, 6 Jul 2018 03:11:20 +0300 Subject: [PATCH] Fixed reference-counting in zend_parse_arg_str_weak() --- Zend/zend_API.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Zend/zend_API.c b/Zend/zend_API.c index f1f6a75e500..daa938a3023 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;