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.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/ext/date/php_date.c b/ext/date/php_date.c
index 00656a41f9..785c1b222e 100644
--- a/ext/date/php_date.c
+++ b/ext/date/php_date.c
@@ -4389,14 +4389,16 @@ static int php_date_interval_initialize_from_hash(zval **return_value, php_inter
PHP_DATE_INTERVAL_READ_PROPERTY("h", h, timelib_sll, -1)
PHP_DATE_INTERVAL_READ_PROPERTY("i", i, timelib_sll, -1)
PHP_DATE_INTERVAL_READ_PROPERTY("s", s, timelib_sll, -1)
- do {
+ {
zval *z_arg = zend_hash_str_find(myht, "f", sizeof("f") - 1);
+ (*intobj)->diff->us = -1000000;
if (z_arg) {
- (*intobj)->diff->us = ((double)zval_get_double(z_arg) * 1000000);
- } else {
- (*intobj)->diff->us = (double) -1000000;
+ double val = zval_get_double(z_arg) * 1000000;
+ if (val >= 0 && val < 1000000) {
+ (*intobj)->diff->us = val;
+ }
}
- } while (0);
+ }
PHP_DATE_INTERVAL_READ_PROPERTY("weekday", weekday, int, -1)
PHP_DATE_INTERVAL_READ_PROPERTY("weekday_behavior", weekday_behavior, int, -1)
PHP_DATE_INTERVAL_READ_PROPERTY("first_last_day_of", first_last_day_of, int, -1)