summaryrefslogtreecommitdiff
path: root/ext/xmlreader/php_xmlreader.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/xmlreader/php_xmlreader.c')
-rw-r--r--ext/xmlreader/php_xmlreader.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/ext/xmlreader/php_xmlreader.c b/ext/xmlreader/php_xmlreader.c
index b3b202af39..20960d96d5 100644
--- a/ext/xmlreader/php_xmlreader.c
+++ b/ext/xmlreader/php_xmlreader.c
@@ -122,11 +122,12 @@ zval *xmlreader_get_property_ptr_ptr(zval *object, zval *member, int type, void
xmlreader_prop_handler *hnd = NULL;
if (Z_TYPE_P(member) != IS_STRING) {
- ZVAL_STR(&tmp_member, zval_get_string_func(member));
- member = &tmp_member;
- if (EG(exception)) {
+ zend_string *str = zval_try_get_string_func(member);
+ if (UNEXPECTED(!str)) {
return NULL;
}
+ ZVAL_STR(&tmp_member, str);
+ member = &tmp_member;
}
obj = Z_XMLREADER_P(object);
@@ -156,11 +157,12 @@ zval *xmlreader_read_property(zval *object, zval *member, int type, void **cache
xmlreader_prop_handler *hnd = NULL;
if (Z_TYPE_P(member) != IS_STRING) {
- ZVAL_STR(&tmp_member, zval_get_string_func(member));
- member = &tmp_member;
- if (EG(exception)) {
+ zend_string *str = zval_try_get_string_func(member);
+ if (UNEXPECTED(!str)) {
return &EG(uninitialized_zval);
}
+ ZVAL_STR(&tmp_member, str);
+ member = &tmp_member;
}
obj = Z_XMLREADER_P(object);
@@ -194,11 +196,12 @@ zval *xmlreader_write_property(zval *object, zval *member, zval *value, void **c
xmlreader_prop_handler *hnd = NULL;
if (Z_TYPE_P(member) != IS_STRING) {
- ZVAL_STR(&tmp_member, zval_get_string_func(member));
- member = &tmp_member;
- if (EG(exception)) {
+ zend_string *str = zval_try_get_string_func(member);
+ if (UNEXPECTED(!str)) {
return value;
}
+ ZVAL_STR(&tmp_member, str);
+ member = &tmp_member;
}
obj = Z_XMLREADER_P(object);