From: Dmitry Stogov Date: Wed, 5 Jun 2019 23:23:17 +0000 (+0300) Subject: Merge branch 'PHP-7.4' X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e029cc4dd45c4ee5ab6678d6c732df9ed17b06d0;p=php Merge branch 'PHP-7.4' * PHP-7.4: Cheaper checks for exceptions thrown from __toString() --- e029cc4dd45c4ee5ab6678d6c732df9ed17b06d0 diff --cc ext/simplexml/simplexml.c index c21b6dad24,06c504884c..bb8dfb3766 --- a/ext/simplexml/simplexml.c +++ b/ext/simplexml/simplexml.c @@@ -726,14 -721,15 +727,15 @@@ static int sxe_prop_dim_exists(zend_obj zval tmp_zv; if (Z_TYPE_P(member) != IS_STRING && Z_TYPE_P(member) != IS_LONG) { - ZVAL_STR(&tmp_zv, zval_get_string_func(member)); - member = &tmp_zv; - if (EG(exception)) { + zend_string *str = zval_try_get_string_func(member); + if (UNEXPECTED(!str)) { return 0; } + ZVAL_STR(&tmp_zv, str); + member = &tmp_zv; } - sxe = Z_SXEOBJ_P(object); + sxe = php_sxe_fetch_object(object); GET_NODE(sxe, node); @@@ -850,14 -844,15 +852,15 @@@ static void sxe_prop_dim_delete(zend_ob int test = 0; if (Z_TYPE_P(member) != IS_STRING && Z_TYPE_P(member) != IS_LONG) { - ZVAL_STR(&tmp_zv, zval_get_string_func(member)); - member = &tmp_zv; - if (EG(exception)) { + zend_string *str = zval_try_get_string_func(member); + if (UNEXPECTED(!str)) { return; } + ZVAL_STR(&tmp_zv, str); + member = &tmp_zv; } - sxe = Z_SXEOBJ_P(object); + sxe = php_sxe_fetch_object(object); GET_NODE(sxe, node);