summaryrefslogtreecommitdiff
path: root/ext/intl/transliterator/transliterator_class.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/intl/transliterator/transliterator_class.c
parent90a2e4ba668e89e59301abfe71175b0c0d1f9b96 (diff)
downloadphp-git-457392fa64692be0927ed641369370f02afb0420.tar.gz
Cheaper checks for exceptions thrown from __toString()
Diffstat (limited to 'ext/intl/transliterator/transliterator_class.c')
-rw-r--r--ext/intl/transliterator/transliterator_class.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/ext/intl/transliterator/transliterator_class.c b/ext/intl/transliterator/transliterator_class.c
index a619ed4309..d5aac5df16 100644
--- a/ext/intl/transliterator/transliterator_class.c
+++ b/ext/intl/transliterator/transliterator_class.c
@@ -193,11 +193,12 @@ err:
zval tmp_member; \
if( Z_TYPE_P( member ) != IS_STRING ) \
{ \
- ZVAL_STR(&tmp_member, \
- zval_get_string_func(member)); \
+ zend_string *_str = \
+ zval_try_get_string_func(member); \
+ if (UNEXPECTED(!_str)) { return_fail; } \
+ ZVAL_STR(&tmp_member, _str); \
member = &tmp_member; \
cache_slot = NULL; \
- if (EG(exception)) { return_fail; } \
}
#define TRANSLITERATOR_PROPERTY_HANDLER_EPILOG \