@@ -4364,6 +4364,20 @@ static int php_date_interval_initialize_from_hash(zval **return_value, php_inter
43644364} \
43654365} while (0);
43664366
4367+ #define PHP_DATE_INTERVAL_READ_PROPERTY_DAYS (member ) \
4368+ do { \
4369+ zval *z_arg = zend_hash_str_find(myht, "days", sizeof("days") - 1); \
4370+ if (z_arg && Z_TYPE_P(z_arg) == IS_FALSE) { \
4371+ (*intobj)->diff->member = -99999; \
4372+ } else if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
4373+ zend_string *str = zval_get_string(z_arg); \
4374+ DATE_A64I((*intobj)->diff->member, ZSTR_VAL(str)); \
4375+ zend_string_release(str); \
4376+ } else { \
4377+ (*intobj)->diff->member = -1LL; \
4378+ } \
4379+ } while (0);
4380+
43674381#define PHP_DATE_INTERVAL_READ_PROPERTY_DOUBLE (element , member , def ) \
43684382do { \
43694383zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \
@@ -4392,7 +4406,7 @@ static int php_date_interval_initialize_from_hash(zval **return_value, php_inter
43924406PHP_DATE_INTERVAL_READ_PROPERTY ("weekday_behavior" , weekday_behavior , int , -1 )
43934407PHP_DATE_INTERVAL_READ_PROPERTY ("first_last_day_of" , first_last_day_of , int , -1 )
43944408PHP_DATE_INTERVAL_READ_PROPERTY ("invert" , invert , int , 0 );
4395- PHP_DATE_INTERVAL_READ_PROPERTY_I64 ( "days" , days );
4409+ PHP_DATE_INTERVAL_READ_PROPERTY_DAYS ( days );
43964410PHP_DATE_INTERVAL_READ_PROPERTY ("special_type" , special .type , unsigned int , 0 );
43974411PHP_DATE_INTERVAL_READ_PROPERTY_I64 ("special_amount" , special .amount );
43984412PHP_DATE_INTERVAL_READ_PROPERTY ("have_weekday_relative" , have_weekday_relative , unsigned int , 0 );
0 commit comments