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

Reply via email to