summaryrefslogtreecommitdiff
path: root/ext/xsl/xsltprocessor.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2019-06-06 01:47:22 +0300
committerDmitry Stogov <dmitry@zend.com>2019-06-06 01:47:22 +0300
commit457392fa64692be0927ed641369370f02afb0420 (patch)
treee83d85fadb66cffa22fc119d3df60e72f2f9a007 /ext/xsl/xsltprocessor.c
parent90a2e4ba668e89e59301abfe71175b0c0d1f9b96 (diff)
downloadphp-git-457392fa64692be0927ed641369370f02afb0420.tar.gz
Cheaper checks for exceptions thrown from __toString()
Diffstat (limited to 'ext/xsl/xsltprocessor.c')
-rw-r--r--ext/xsl/xsltprocessor.c11
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);