derick Sun, 07 Mar 2010 13:54:46 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=295924
Log: - Fixed bug #50555 (DateTime::sub() allows 'relative' time modifications). Bug: http://bugs.php.net/50555 (Open) Cannot retrieve output parameter from stored procedure 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/bug50055.phpt U php/php-src/trunk/ext/date/php_date.c A php/php-src/trunk/ext/date/tests/bug50055.phpt Modified: php/php-src/branches/PHP_5_3/NEWS =================================================================== --- php/php-src/branches/PHP_5_3/NEWS 2010-03-07 13:47:06 UTC (rev 295923) +++ php/php-src/branches/PHP_5_3/NEWS 2010-03-07 13:54:46 UTC (rev 295924) @@ -27,7 +27,9 @@ - Fixed bug #50383 (Exceptions thrown in __call / __callStatic do not include file and line in trace). (Felipe) - Fixed bug #50358 (Compile failure compiling ext/phar/util.lo). (Felipe) +- Fixed bug #50555 (DateTime::sub() allows 'relative' time modifications). (Derick) + ?? ??? 20??, PHP 5.3.2 - Upgraded bundled sqlite to version 3.6.22. (Ilia) - Upgraded bundled libmagic to version 5.03. (Mikko) 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 13:47:06 UTC (rev 295923) +++ php/php-src/branches/PHP_5_3/ext/date/php_date.c 2010-03-07 13:54:46 UTC (rev 295924) @@ -2851,6 +2851,11 @@ intobj = (php_interval_obj *) zend_object_store_get_object(interval TSRMLS_CC); DATE_CHECK_INITIALIZED(intobj->initialized, DateInterval); + if (intobj->diff->have_special_relative) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Only non-special relative time specifications are supported for subtraction"); + return; + } + if (intobj->diff->invert) { bias = -1; } Added: php/php-src/branches/PHP_5_3/ext/date/tests/bug50055.phpt =================================================================== --- php/php-src/branches/PHP_5_3/ext/date/tests/bug50055.phpt (rev 0) +++ php/php-src/branches/PHP_5_3/ext/date/tests/bug50055.phpt 2010-03-07 13:54:46 UTC (rev 295924) @@ -0,0 +1,30 @@ +--TEST-- +Bug #50555 (DateTime::sub() allows 'relative' time modifications). +--FILE-- +<?php +$now = '2010-03-07 13:21:38 UTC'; +//positive DateInterval +$da1 = date_create( $now ); +$ds1 = date_create( $now ); +$i = DateInterval::createFromDateString('third Tuesday of next month'); +echo $da1->format( DateTime::ISO8601 ), "\n"; +echo date_add($da1, $i)->format( DateTime::ISO8601 ), "\n"; +date_sub($ds1, $i); + +//negative DateInterval +$da2 = date_create( $now ); +$ds2 = date_create( $now ); +$i2 = DateInterval::createFromDateString('third Tuesday of last month'); +echo $da2->format( DateTime::ISO8601 ), "\n"; +echo date_add($da2, $i2)->format( DateTime::ISO8601 ), "\n";//works +date_sub($ds2, $i); +?> +--EXPECTF-- +2010-03-07T13:21:38+0000 +2010-04-20T13:21:38+0000 + +Warning: date_sub(): Only non-special relative time specifications are supported for subtraction in %sbug50055.php on line 9 +2010-03-07T13:21:38+0000 +2010-02-16T13:21:38+0000 + +Warning: date_sub(): Only non-special relative time specifications are supported for subtraction in %sbug50055.php on line 17 Modified: php/php-src/trunk/ext/date/php_date.c =================================================================== --- php/php-src/trunk/ext/date/php_date.c 2010-03-07 13:47:06 UTC (rev 295923) +++ php/php-src/trunk/ext/date/php_date.c 2010-03-07 13:54:46 UTC (rev 295924) @@ -2980,6 +2980,11 @@ intobj = (php_interval_obj *) zend_object_store_get_object(interval TSRMLS_CC); DATE_CHECK_INITIALIZED(intobj->initialized, DateInterval); + if (intobj->diff->have_special_relative) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Only non-special relative time specifications are supported for subtraction"); + return; + } + if (intobj->diff->invert) { bias = -1; } Added: php/php-src/trunk/ext/date/tests/bug50055.phpt =================================================================== --- php/php-src/trunk/ext/date/tests/bug50055.phpt (rev 0) +++ php/php-src/trunk/ext/date/tests/bug50055.phpt 2010-03-07 13:54:46 UTC (rev 295924) @@ -0,0 +1,30 @@ +--TEST-- +Bug #50555 (DateTime::sub() allows 'relative' time modifications). +--FILE-- +<?php +$now = '2010-03-07 13:21:38 UTC'; +//positive DateInterval +$da1 = date_create( $now ); +$ds1 = date_create( $now ); +$i = DateInterval::createFromDateString('third Tuesday of next month'); +echo $da1->format( DateTime::ISO8601 ), "\n"; +echo date_add($da1, $i)->format( DateTime::ISO8601 ), "\n"; +date_sub($ds1, $i); + +//negative DateInterval +$da2 = date_create( $now ); +$ds2 = date_create( $now ); +$i2 = DateInterval::createFromDateString('third Tuesday of last month'); +echo $da2->format( DateTime::ISO8601 ), "\n"; +echo date_add($da2, $i2)->format( DateTime::ISO8601 ), "\n";//works +date_sub($ds2, $i); +?> +--EXPECTF-- +2010-03-07T13:21:38+0000 +2010-04-20T13:21:38+0000 + +Warning: date_sub(): Only non-special relative time specifications are supported for subtraction in %sbug50055.php on line 9 +2010-03-07T13:21:38+0000 +2010-02-16T13:21:38+0000 + +Warning: date_sub(): Only non-special relative time specifications are supported for subtraction in %sbug50055.php on line 17
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php