@@ -4359,6 +4359,20 @@ static int php_date_interval_initialize_from_hash(zval **return_value, php_inter
43594359 } \
43604360 } while (0);
43614361
4362+ #define PHP_DATE_INTERVAL_READ_PROPERTY_DAYS (member ) \
4363+ do { \
4364+ zval *z_arg = zend_hash_str_find(myht, "days", sizeof("days") - 1); \
4365+ if (z_arg && Z_TYPE_P(z_arg) == IS_FALSE) { \
4366+ (*intobj)->diff->member = -99999; \
4367+ } else if (z_arg && Z_TYPE_P(z_arg) <= IS_STRING) { \
4368+ zend_string *str = zval_get_string(z_arg); \
4369+ DATE_A64I((*intobj)->diff->member, ZSTR_VAL(str)); \
4370+ zend_string_release(str); \
4371+ } else { \
4372+ (*intobj)->diff->member = -1LL; \
4373+ } \
4374+ } while (0);
4375+
43624376#define PHP_DATE_INTERVAL_READ_PROPERTY_DOUBLE (element , member , def ) \
43634377 do { \
43644378 zval *z_arg = zend_hash_str_find(myht, element, sizeof(element) - 1); \
@@ -4387,7 +4401,7 @@ static int php_date_interval_initialize_from_hash(zval **return_value, php_inter
43874401 PHP_DATE_INTERVAL_READ_PROPERTY ("weekday_behavior" , weekday_behavior , int , -1 )
43884402 PHP_DATE_INTERVAL_READ_PROPERTY ("first_last_day_of" , first_last_day_of , int , -1 )
43894403 PHP_DATE_INTERVAL_READ_PROPERTY ("invert" , invert , int , 0 );
4390- PHP_DATE_INTERVAL_READ_PROPERTY_I64 ( "days" , days );
4404+ PHP_DATE_INTERVAL_READ_PROPERTY_DAYS ( days );
43914405 PHP_DATE_INTERVAL_READ_PROPERTY ("special_type" , special .type , unsigned int , 0 );
43924406 PHP_DATE_INTERVAL_READ_PROPERTY_I64 ("special_amount" , special .amount );
43934407 PHP_DATE_INTERVAL_READ_PROPERTY ("have_weekday_relative" , have_weekday_relative , unsigned int , 0 );
0 commit comments