summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDerick Rethans <derick@php.net>2010-03-07 17:25:16 +0000
committerDerick Rethans <derick@php.net>2010-03-07 17:25:16 +0000
commit3cface60c88aea1e443b629da23d9913e9b7a09e (patch)
tree43e30fc3e908c5569ed3d141c77ac45f3ce36076
parent39a5cd563f3d2ab16a39b4bdc89cc12f9f1a0a06 (diff)
downloadphp-git-3cface60c88aea1e443b629da23d9913e9b7a09e.tar.gz
- Fixed bug #49059 (DateTime::diff() repeats previous sub() operation).
-rw-r--r--ext/date/php_date.c2
-rw-r--r--ext/date/tests/bug49059.phpt34
2 files changed, 36 insertions, 0 deletions
diff --git a/ext/date/php_date.c b/ext/date/php_date.c
index 40e75a6d66..955e91d86d 100644
--- a/ext/date/php_date.c
+++ b/ext/date/php_date.c
@@ -3009,6 +3009,8 @@ PHP_FUNCTION(date_sub)
timelib_update_ts(dateobj->time, NULL);
timelib_update_from_sse(dateobj->time);
+ dateobj->time->have_relative = 0;
+
RETURN_ZVAL(object, 1, 0);
}
/* }}} */
diff --git a/ext/date/tests/bug49059.phpt b/ext/date/tests/bug49059.phpt
new file mode 100644
index 0000000000..48d2dacb21
--- /dev/null
+++ b/ext/date/tests/bug49059.phpt
@@ -0,0 +1,34 @@
+--TEST--
+Bug #49059 (DateTime::diff() repeats previous sub() operation)
+--FILE--
+<?php
+date_default_timezone_set('Asia/Calcutta');
+
+$date1 = date_create("2009-03-27");
+$date2 = date_create("2009-03-01");
+print "\$date1 at init: " . $date1->format("Y-m-d") . "\n";
+print "\$date2 at init: " . $date2->format("Y-m-d") . "\n";
+$diff = $date1->diff($date2);
+print "\$date1 after first diff: " . $date1->format("Y-m-d") . "\n";
+print "\$diff->days after first diff: " . $diff->days . "\n";
+$date1 = $date1->sub(new DateInterval("P2D"));
+print "\$date1 after sub: " . $date1->format("Y-m-d") . "\n";
+$diff = $date1->diff($date2);
+print "\$date1 after second diff (called at \$date1): " .
+$date1->format("Y-m-d") . "\n";
+print "\$diff->days after second diff: " . $diff->days . "\n";
+$diff = $date2->diff($date1);
+print "\$date1 after third diff (called at \$date2): " .
+$date1->format("Y-m-d") . "\n";
+print "\$diff->days after third diff: " . $diff->days . "\n";
+?>
+--EXPECT--
+$date1 at init: 2009-03-27
+$date2 at init: 2009-03-01
+$date1 after first diff: 2009-03-27
+$diff->days after first diff: 26
+$date1 after sub: 2009-03-25
+$date1 after second diff (called at $date1): 2009-03-25
+$diff->days after second diff: 24
+$date1 after third diff (called at $date2): 2009-03-25
+$diff->days after third diff: 24