diff options
author | Dmitry Stogov <dmitry@zend.com> | 2019-06-06 01:47:22 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2019-06-06 01:47:22 +0300 |
commit | 457392fa64692be0927ed641369370f02afb0420 (patch) | |
tree | e83d85fadb66cffa22fc119d3df60e72f2f9a007 /ext/xsl/xsltprocessor.c | |
parent | 90a2e4ba668e89e59301abfe71175b0c0d1f9b96 (diff) | |
download | php-git-457392fa64692be0927ed641369370f02afb0420.tar.gz |
Cheaper checks for exceptions thrown from __toString()
Diffstat (limited to 'ext/xsl/xsltprocessor.c')
-rw-r--r-- | ext/xsl/xsltprocessor.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/ext/xsl/xsltprocessor.c b/ext/xsl/xsltprocessor.c index 919006041a..20d907dc4a 100644 --- a/ext/xsl/xsltprocessor.c +++ b/ext/xsl/xsltprocessor.c @@ -757,14 +757,17 @@ PHP_FUNCTION(xsl_xsltprocessor_set_parameter) intern = Z_XSL_P(id); ZEND_HASH_FOREACH_STR_KEY_VAL(Z_ARRVAL_P(array_value), string_key, entry) { zval tmp; + zend_string *str; + if (string_key == NULL) { php_error_docref(NULL, E_WARNING, "Invalid parameter array"); RETURN_FALSE; } - ZVAL_STR(&tmp, zval_get_string(entry)); - if (EG(exception)) { + str = zval_try_get_string(entry); + if (UNEXPECTED(!str)) { return; } + ZVAL_STR(&tmp, str); zend_hash_update(intern->parameter, string_key, &tmp); } ZEND_HASH_FOREACH_END(); RETURN_TRUE; @@ -847,8 +850,8 @@ PHP_FUNCTION(xsl_xsltprocessor_register_php_functions) intern = Z_XSL_P(id); ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(array_value), entry) { - zend_string *str = zval_get_string(entry); - if (EG(exception)) { + zend_string *str = zval_try_get_string(entry); + if (UNEXPECTED(!str)) { return; } ZVAL_LONG(&new_string, 1); |