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/intl/transliterator/transliterator_class.c | |
parent | 90a2e4ba668e89e59301abfe71175b0c0d1f9b96 (diff) | |
download | php-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.c | 7 |
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 \ |