diff --git a/ext/date/php_date.c b/ext/date/php_date.c index 55d9647714d30..f7f7bde597c34 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -4681,9 +4681,10 @@ static void php_date_interval_initialize_from_hash(zval **return_value, php_inte if (z_arg && Z_TYPE_P(z_arg) == IS_FALSE) { \ (*intobj)->diff->member = TIMELIB_UNSET; \ } else if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \ - zend_string *str = zval_get_string(z_arg); \ + zend_string *tmp_str; \ + zend_string *str = zval_get_tmp_string(z_arg, &tmp_str); \ DATE_A64I((*intobj)->diff->member, ZSTR_VAL(str)); \ - zend_string_release(str); \ + zend_tmp_string_release(tmp_str); \ } else { \ (*intobj)->diff->member = -1LL; \ } \