From: Willem-Jan Date: Mon, 30 Nov 2015 16:35:12 +0000 (+0100) Subject: Test + support for negative timestamps with microtime X-Git-Tag: php-7.0.4RC1~20^2~27 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2aeef4e5390344115391607792dbf8b94b3ec459;p=php Test + support for negative timestamps with microtime --- diff --git a/ext/date/php_date.c b/ext/date/php_date.c index 45e77c38a2..4ef954717d 100644 --- a/ext/date/php_date.c +++ b/ext/date/php_date.c @@ -2201,7 +2201,11 @@ static int date_object_compare_date(zval *d1, zval *d2 TSRMLS_DC) return 0; } - return (o1->time->f < o2->time->f) ? -1 : 1; + if (o1->time->sse < 0) { + return (o1->time->f < o2->time->f) ? 1 : -1; + } else { + return (o1->time->f < o2->time->f) ? -1 : 1; + } } return (o1->time->sse < o2->time->sse) ? -1 : 1; diff --git a/ext/date/tests/bug68078_negative.phpt b/ext/date/tests/bug68078_negative.phpt new file mode 100644 index 0000000000..93b7715fe5 --- /dev/null +++ b/ext/date/tests/bug68078_negative.phpt @@ -0,0 +1,19 @@ +--TEST-- +Comparing datetime objects with negative timestamps should account for microseconds +--FILE-- +modify('-5 seconds'); +$earlyDate2 = DateTime::createFromFormat('U.u', '1.2768')->modify('-5 seconds'); +$earlyDate3 = DateTime::createFromFormat('U.u', '1.2768')->modify('-5 seconds'); + +var_dump($earlyDate1 == $earlyDate2); +var_dump($earlyDate1 < $earlyDate2); +var_dump($earlyDate2 > $earlyDate1); +var_dump($earlyDate2 == $earlyDate3); +--EXPECT-- +bool(false) +bool(true) +bool(true) +bool(true)