derick          Wed Apr 16 17:24:00 2008 UTC

  Modified files:              
    /php-src/ext/date   php_date.c 
    /php-src/ext/date/tests     bug44742.phpt 
  Log:
  - MF52: Fixed bug #44703 (htmlspecialchars() does not detect bad character set
    argument).
  #- WIll merge to 5.3 later, that branch has some more modifications.
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/date/php_date.c?r1=1.176&r2=1.177&diff_format=u
Index: php-src/ext/date/php_date.c
diff -u php-src/ext/date/php_date.c:1.176 php-src/ext/date/php_date.c:1.177
--- php-src/ext/date/php_date.c:1.176   Mon Mar 31 09:10:54 2008
+++ php-src/ext/date/php_date.c Wed Apr 16 17:24:00 2008
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: php_date.c,v 1.176 2008/03/31 09:10:54 derick Exp $ */
+/* $Id: php_date.c,v 1.177 2008/04/16 17:24:00 derick Exp $ */
 
 #include "php.h"
 #include "php_streams.h"
@@ -2750,9 +2750,19 @@
        dateobj = (php_date_obj *) zend_object_store_get_object(dateobject 
TSRMLS_CC);
        DATE_CHECK_INITIALIZED(dateobj->time, DateTime);
 
-       offset = timelib_get_time_zone_info(dateobj->time->sse, tzobj->tzi.tz);
-       RETVAL_LONG(offset->offset);
-       timelib_time_offset_dtor(offset);
+       switch (tzobj->type) {
+               case TIMELIB_ZONETYPE_ID:
+                       offset = timelib_get_time_zone_info(dateobj->time->sse, 
tzobj->tzi.tz);
+                       RETVAL_LONG(offset->offset);
+                       timelib_time_offset_dtor(offset);
+                       break;
+               case TIMELIB_ZONETYPE_OFFSET:
+                       RETURN_LONG(tzobj->tzi.utc_offset * -60);
+                       break;
+               case TIMELIB_ZONETYPE_ABBR:
+                       RETURN_LONG((tzobj->tzi.z.utc_offset - 
(tzobj->tzi.z.dst*60)) * -60);
+                       break;
+       }
 }
 /* }}} */
 
http://cvs.php.net/viewvc.cgi/php-src/ext/date/tests/bug44742.phpt?r1=1.1&r2=1.2&diff_format=u
Index: php-src/ext/date/tests/bug44742.phpt
diff -u /dev/null php-src/ext/date/tests/bug44742.phpt:1.2
--- /dev/null   Wed Apr 16 17:24:00 2008
+++ php-src/ext/date/tests/bug44742.phpt        Wed Apr 16 17:24:00 2008
@@ -0,0 +1,35 @@
+--TEST--
+Bug #44742 (timezone_offset_get() causes segmentation faults)
+--FILE--
+<?php
+$dates = array(
+       "2008-04-11 00:00:00+0000",
+       "2008-04-11 00:00:00+0200",
+       "2008-04-11 00:00:00+0330",
+       "2008-04-11 00:00:00-0500",
+       "2008-04-11 00:00:00-1130",
+       "2008-04-11 00:00:00 CEST",
+       "2008-04-11 00:00:00 CET",
+       "2008-04-11 00:00:00 UTC",
+       "2008-04-11 00:00:00 America/New_York",
+       "2008-04-11 00:00:00 Europe/Oslo",
+       "2008-04-11 00:00:00 Asia/Singapore",
+);
+foreach ($dates as $date)
+{
+       $date = date_create($date);
+       var_dump(timezone_offset_get(date_timezone_get($date), $date));
+}
+?>
+--EXPECT--
+int(0)
+int(7200)
+int(12600)
+int(-18000)
+int(-41400)
+int(7200)
+int(3600)
+int(0)
+int(-14400)
+int(7200)
+int(28800)



-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to