svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/ext/date/php_date.c branches/PHP_5_3/ext/date/tests/bug49059.phpt trunk/ext/date/php_date.c
trunk/ext/date/tests/bug49059.phpt
| From: | Derick Rethans | Date: | Sun, 07 Mar 2010 17:25:16 +0000 |
| Subject: | svn: /php/php-src/ branches/PHP_5_3/NEWS branches/PHP_5_3/ext/date/php_date.c branches/PHP_5_3/ext/date/tests/bug49059.phpt trunk/ext/date/php_date.c trunk/ext/date/tests/bug49059.phpt |
||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-61991@lists.php.net to get a copy of this message | ||
derick Sun, 07 Mar 2010 17:25:16 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=295933
Log:
- Fixed bug #49059 (DateTime::diff() repeats previous sub() operation).
Bug: http://bugs.php.net/49059 (Closed) DateTime::diff()
repeats previous sub() operation
Changed paths:
U php/php-src/branches/PHP_5_3/NEWS
U php/php-src/branches/PHP_5_3/ext/date/php_date.c
A php/php-src/branches/PHP_5_3/ext/date/tests/bug49059.phpt
U php/php-src/trunk/ext/date/php_date.c
A php/php-src/trunk/ext/date/tests/bug49059.phpt
Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS 2010-03-07 17:23:40 UTC (rev 295932)
+++ php/php-src/branches/PHP_5_3/NEWS 2010-03-07 17:25:16 UTC (rev 295933)
@@ -30,6 +30,8 @@
- Fixed bug #50358 (Compile failure compiling ext/phar/util.lo). (Felipe)
- Fixed bug #49778 (DateInterval::format("%a") is always zero when an interval
is created from an ISO string). (Derick)
+- Fixed bug #49059 (DateTime::diff() repeats previous sub() operation).
+ (yoarvi@gmail.com, Derick)
?? ??? 20??, PHP 5.3.2
Modified: php/php-src/branches/PHP_5_3/ext/date/php_date.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/date/php_date.c 2010-03-07 17:23:40 UTC (rev 295932)
+++ php/php-src/branches/PHP_5_3/ext/date/php_date.c 2010-03-07 17:25:16 UTC (rev 295933)
@@ -2880,6 +2880,8 @@
timelib_update_ts(dateobj->time, NULL);
timelib_update_from_sse(dateobj->time);
+ dateobj->time->have_relative = 0;
+
RETURN_ZVAL(object, 1, 0);
}
/* }}} */
Added: php/php-src/branches/PHP_5_3/ext/date/tests/bug49059.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/ext/date/tests/bug49059.phpt (rev 0)
+++ php/php-src/branches/PHP_5_3/ext/date/tests/bug49059.phpt 2010-03-07 17:25:16 UTC (rev 295933)
@@ -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
Modified: php/php-src/trunk/ext/date/php_date.c
===================================================================
--- php/php-src/trunk/ext/date/php_date.c 2010-03-07 17:23:40 UTC (rev 295932)
+++ php/php-src/trunk/ext/date/php_date.c 2010-03-07 17:25:16 UTC (rev 295933)
@@ -3009,6 +3009,8 @@
timelib_update_ts(dateobj->time, NULL);
timelib_update_from_sse(dateobj->time);
+ dateobj->time->have_relative = 0;
+
RETURN_ZVAL(object, 1, 0);
}
/* }}} */
Added: php/php-src/trunk/ext/date/tests/bug49059.phpt
===================================================================
--- php/php-src/trunk/ext/date/tests/bug49059.phpt (rev 0)
+++ php/php-src/trunk/ext/date/tests/bug49059.phpt 2010-03-07 17:25:16 UTC (rev 295933)
@@ -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