summaryrefslogtreecommitdiff
path: root/ext/date/php_date.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/date/php_date.c')
-rw-r--r--ext/date/php_date.c36
1 files changed, 20 insertions, 16 deletions
diff --git a/ext/date/php_date.c b/ext/date/php_date.c
index 3e8fb419d8..3ed320705d 100644
--- a/ext/date/php_date.c
+++ b/ext/date/php_date.c
@@ -2040,12 +2040,13 @@ static int date_interval_has_property(zval *object, zval *member, int type, void
int retval = 0;
if (UNEXPECTED(Z_TYPE_P(member) != IS_STRING)) {
- ZVAL_STR(&tmp_member, zval_get_string_func(member));
- member = &tmp_member;
- cache_slot = NULL;
- if (EG(exception)) {
+ zend_string *str = zval_try_get_string_func(member);
+ if (UNEXPECTED(!str)) {
return 0;
}
+ ZVAL_STR(&tmp_member, str);
+ member = &tmp_member;
+ cache_slot = NULL;
}
obj = Z_PHPINTERVAL_P(object);
@@ -4167,12 +4168,13 @@ static zval *date_interval_read_property(zval *object, zval *member, int type, v
double fvalue = -1;
if (Z_TYPE_P(member) != IS_STRING) {
- ZVAL_STR(&tmp_member, zval_get_string_func(member));
- member = &tmp_member;
- cache_slot = NULL;
- 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;
+ cache_slot = NULL;
}
obj = Z_PHPINTERVAL_P(object);
@@ -4238,12 +4240,13 @@ static zval *date_interval_write_property(zval *object, zval *member, zval *valu
zval tmp_member;
if (Z_TYPE_P(member) != IS_STRING) {
- ZVAL_STR(&tmp_member, zval_get_string_func(member));
- member = &tmp_member;
- cache_slot = NULL;
- 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;
+ cache_slot = NULL;
}
obj = Z_PHPINTERVAL_P(object);
@@ -4292,12 +4295,13 @@ static zval *date_interval_get_property_ptr_ptr(zval *object, zval *member, int
zval tmp_member, *ret;
if (Z_TYPE_P(member) != IS_STRING) {
- ZVAL_STR(&tmp_member, zval_get_string_func(member));
- member = &tmp_member;
- cache_slot = NULL;
- 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;
+ cache_slot = NULL;
}
if(zend_binary_strcmp("y", sizeof("y") - 1, Z_STRVAL_P(member), Z_STRLEN_P(member)) == 0 ||