]> granicus.if.org Git - php/commitdiff
Fix a BC breach related to bug #53437
authorAnatol Belski <ab@php.net>
Mon, 10 Jun 2013 15:48:13 +0000 (17:48 +0200)
committerAnatol Belski <ab@php.net>
Mon, 10 Jun 2013 15:48:13 +0000 (17:48 +0200)
days and special_amount properties are exported as int again

ext/date/php_date.c
ext/date/tests/bug45682.phpt
ext/date/tests/bug49778.phpt
ext/date/tests/bug52113.phpt
ext/date/tests/bug52808.phpt
ext/date/tests/bug53437.phpt
ext/date/tests/bug53437_var2.phpt
ext/date/tests/bug53437_var3.phpt
ext/date/tests/bug53437_var4.phpt [new file with mode: 0644]
ext/date/tests/bug60774.phpt
ext/date/tests/date_diff1.phpt

index d09d254c177fadfaf1873197f3e3dae7a8d9fef3..28ac86b119170b770f80554e93ce240376381b93 100644 (file)
@@ -2384,18 +2384,9 @@ static HashTable *date_object_get_properties_interval(zval *object TSRMLS_DC)
                return props;
        }
 
-#define PHP_DATE_INTERVAL_ADD_PROPERTY_I64(n, f) \
-       do { \
-               char i64_buf[DATE_I64_BUF_LEN]; \
-               MAKE_STD_ZVAL(zv); \
-               DATE_I64A(intervalobj->diff->f, i64_buf, DATE_I64_BUF_LEN); \
-               ZVAL_STRING(zv, i64_buf, 1); \
-               zend_hash_update(props, n, strlen(n) + 1, &zv, sizeof(zval), NULL); \
-       } while(0);
-
 #define PHP_DATE_INTERVAL_ADD_PROPERTY(n,f) \
        MAKE_STD_ZVAL(zv); \
-       ZVAL_LONG(zv, intervalobj->diff->f); \
+       ZVAL_LONG(zv, (long)intervalobj->diff->f); \
        zend_hash_update(props, n, strlen(n) + 1, &zv, sizeof(zval), NULL);
 
        PHP_DATE_INTERVAL_ADD_PROPERTY("y", y);
@@ -2409,14 +2400,14 @@ static HashTable *date_object_get_properties_interval(zval *object TSRMLS_DC)
        PHP_DATE_INTERVAL_ADD_PROPERTY("first_last_day_of", first_last_day_of);
        PHP_DATE_INTERVAL_ADD_PROPERTY("invert", invert);
        if (intervalobj->diff->days != -99999) {
-               PHP_DATE_INTERVAL_ADD_PROPERTY_I64("days", days);
+               PHP_DATE_INTERVAL_ADD_PROPERTY("days", days);
        } else {
                MAKE_STD_ZVAL(zv);
                ZVAL_FALSE(zv);
                zend_hash_update(props, "days", 5, &zv, sizeof(zval), NULL);
        }
        PHP_DATE_INTERVAL_ADD_PROPERTY("special_type", special.type);
-       PHP_DATE_INTERVAL_ADD_PROPERTY_I64("special_amount", special.amount);
+       PHP_DATE_INTERVAL_ADD_PROPERTY("special_amount", special.amount);
        PHP_DATE_INTERVAL_ADD_PROPERTY("have_weekday_relative", have_weekday_relative);
        PHP_DATE_INTERVAL_ADD_PROPERTY("have_special_relative", have_special_relative);
 
index 094c7fdf45b3c1983b28c01a6649960c073029d6..ea8fa94706ef8e6b399025e03593ee55e35dbbbe 100644 (file)
@@ -34,11 +34,11 @@ object(DateInterval)#%d (15) {
   ["invert"]=>
   int(0)
   ["days"]=>
-  string(1) "3"
+  int(3)
   ["special_type"]=>
   int(0)
   ["special_amount"]=>
-  string(1) "0"
+  int(0)
   ["have_weekday_relative"]=>
   int(0)
   ["have_special_relative"]=>
index cc52a23b2549a0e442787bfa146768e71fa7d24b..2062d69168d8d1437401218911df213ba2bd5284 100644 (file)
@@ -34,7 +34,7 @@ object(DateInterval)#1 (15) {
   ["special_type"]=>
   int(0)
   ["special_amount"]=>
-  string(1) "0"
+  int(0)
   ["have_weekday_relative"]=>
   int(0)
   ["have_special_relative"]=>
index 862e92e9615012654c05087c19a1ff9ceb11a1ec..f4730c6a440cb367b35378f13999883adf93f4fa 100644 (file)
@@ -54,17 +54,17 @@ object(DateInterval)#3 (15) {
   ["invert"]=>
   int(0)
   ["days"]=>
-  string(1) "0"
+  int(0)
   ["special_type"]=>
   int(0)
   ["special_amount"]=>
-  string(1) "0"
+  int(0)
   ["have_weekday_relative"]=>
   int(0)
   ["have_special_relative"]=>
   int(0)
 }
-string(328) "O:12:"DateInterval":15:{s:1:"y";i:0;s:1:"m";i:0;s:1:"d";i:0;s:1:"h";i:4;s:1:"i";i:0;s:1:"s";i:0;s:7:"weekday";i:0;s:16:"weekday_behavior";i:0;s:17:"first_last_day_of";i:0;s:6:"invert";i:0;s:4:"days";s:1:"0";s:12:"special_type";i:0;s:14:"special_amount";s:1:"0";s:21:"have_weekday_relative";i:0;s:21:"have_special_relative";i:0;}"
+string(320) "O:12:"DateInterval":15:{s:1:"y";i:0;s:1:"m";i:0;s:1:"d";i:0;s:1:"h";i:4;s:1:"i";i:0;s:1:"s";i:0;s:7:"weekday";i:0;s:16:"weekday_behavior";i:0;s:17:"first_last_day_of";i:0;s:6:"invert";i:0;s:4:"days";i:0;s:12:"special_type";i:0;s:14:"special_amount";i:0;s:21:"have_weekday_relative";i:0;s:21:"have_special_relative";i:0;}"
 DateInterval::__set_state(array(
    'y' => 0,
    'm' => 0,
@@ -76,9 +76,9 @@ DateInterval::__set_state(array(
    'weekday_behavior' => 0,
    'first_last_day_of' => 0,
    'invert' => 0,
-   'days' => '0',
+   'days' => 0,
    'special_type' => 0,
-   'special_amount' => '0',
+   'special_amount' => 0,
    'have_weekday_relative' => 0,
    'have_special_relative' => 0,
 ))object(DateInterval)#5 (15) {
@@ -103,11 +103,11 @@ DateInterval::__set_state(array(
   ["invert"]=>
   int(0)
   ["days"]=>
-  string(1) "0"
+  int(0)
   ["special_type"]=>
   int(0)
   ["special_amount"]=>
-  string(1) "0"
+  int(0)
   ["have_weekday_relative"]=>
   int(0)
   ["have_special_relative"]=>
@@ -150,11 +150,11 @@ object(DatePeriod)#6 (6) {
     ["invert"]=>
     int(0)
     ["days"]=>
-    string(1) "0"
+    int(0)
     ["special_type"]=>
     int(0)
     ["special_amount"]=>
-    string(1) "0"
+    int(0)
     ["have_weekday_relative"]=>
     int(0)
     ["have_special_relative"]=>
@@ -187,11 +187,11 @@ object(DateInterval)#8 (15) {
   ["invert"]=>
   int(1)
   ["days"]=>
-  string(4) "2400"
+  int(2400)
   ["special_type"]=>
   int(0)
   ["special_amount"]=>
-  string(2) "-1"
+  int(-1)
   ["have_weekday_relative"]=>
   int(0)
   ["have_special_relative"]=>
@@ -234,11 +234,11 @@ object(DatePeriod)#9 (6) {
     ["invert"]=>
     int(0)
     ["days"]=>
-    string(1) "0"
+    int(0)
     ["special_type"]=>
     int(0)
     ["special_amount"]=>
-    string(1) "0"
+    int(0)
     ["have_weekday_relative"]=>
     int(0)
     ["have_special_relative"]=>
index e3b38bb5ffd7ff51c83874b284a55aee1fe0d78c..1f0fc84cd78206609ccb9b6572b88cc1bdcbdf72 100644 (file)
@@ -47,11 +47,11 @@ object(DateInterval)#%d (15) {
   ["invert"]=>
   int(1)
   ["days"]=>
-  string(3) "437"
+  int(437)
   ["special_type"]=>
   int(0)
   ["special_amount"]=>
-  string(1) "0"
+  int(0)
   ["have_weekday_relative"]=>
   int(0)
   ["have_special_relative"]=>
@@ -79,11 +79,11 @@ object(DateInterval)#%d (15) {
   ["invert"]=>
   int(0)
   ["days"]=>
-  string(3) "294"
+  int(294)
   ["special_type"]=>
   int(0)
   ["special_amount"]=>
-  string(1) "0"
+  int(0)
   ["have_weekday_relative"]=>
   int(0)
   ["have_special_relative"]=>
@@ -111,11 +111,11 @@ object(DateInterval)#%d (15) {
   ["invert"]=>
   int(0)
   ["days"]=>
-  string(3) "294"
+  int(294)
   ["special_type"]=>
   int(0)
   ["special_amount"]=>
-  string(1) "0"
+  int(0)
   ["have_weekday_relative"]=>
   int(0)
   ["have_special_relative"]=>
index 7a282ab6c2ee74c371591bbfd4500358d819de06..2ea091453fa83a2eacd1febe701ef5257ef949d9 100644 (file)
@@ -77,7 +77,7 @@ object(DatePeriod)#1 (6) {
     ["special_type"]=>
     int(0)
     ["special_amount"]=>
-    string(1) "0"
+    int(0)
     ["have_weekday_relative"]=>
     int(0)
     ["have_special_relative"]=>
@@ -132,11 +132,11 @@ object(DatePeriod)#5 (6) {
     ["invert"]=>
     int(0)
     ["days"]=>
-    string(1) "0"
+    int(0)
     ["special_type"]=>
     int(0)
     ["special_amount"]=>
-    string(1) "0"
+    int(0)
     ["have_weekday_relative"]=>
     int(0)
     ["have_special_relative"]=>
index 70565960efbc43cd72b23f22b98273844e7b851d..50aebda57c24b38d8286772fa488584816e03926 100644 (file)
@@ -39,7 +39,7 @@ object(DateInterval)#1 (15) {
   ["special_type"]=>
   int(0)
   ["special_amount"]=>
-  string(1) "0"
+  int(0)
   ["have_weekday_relative"]=>
   int(0)
   ["have_special_relative"]=>
@@ -67,11 +67,11 @@ object(DateInterval)#2 (15) {
   ["invert"]=>
   int(0)
   ["days"]=>
-  string(1) "0"
+  int(0)
   ["special_type"]=>
   int(0)
   ["special_amount"]=>
-  string(1) "0"
+  int(0)
   ["have_weekday_relative"]=>
   int(0)
   ["have_special_relative"]=>
index 06f68df61ff66bd6e6b6fd85da25a31146cc6f99..da7d0bd396ba67c15ad53ed5841ac1b6887297f1 100644 (file)
@@ -32,11 +32,11 @@ object(DateInterval)#1 (15) {
   ["invert"]=>
   int(0)
   ["days"]=>
-  string(1) "0"
+  int(0)
   ["special_type"]=>
   int(0)
   ["special_amount"]=>
-  string(19) "9223372036854775807"
+  int(-1)
   ["have_weekday_relative"]=>
   int(9)
   ["have_special_relative"]=>
diff --git a/ext/date/tests/bug53437_var4.phpt b/ext/date/tests/bug53437_var4.phpt
new file mode 100644 (file)
index 0000000..03b0a54
--- /dev/null
@@ -0,0 +1,62 @@
+--TEST--\r
+Bug #53437 (Check that var_dump out is the same using the whole object or it's single properties), variation 4\r
+--FILE--\r
+<?php\r
+$dt = new DateTime('2009-10-11');\r
+\r
+$df = $dt->diff(new DateTime('2009-10-13'));\r
+\r
+var_dump($df,\r
+       $df->y,\r
+       $df->m,\r
+       $df->d,\r
+       $df->h,\r
+       $df->i,\r
+       $df->s,\r
+       $df->invert,\r
+       $df->days);\r
+\r
+?>\r
+==DONE==\r
+--EXPECTF--\r
+object(DateInterval)#%d (15) {\r
+  ["y"]=>\r
+  int(0)\r
+  ["m"]=>\r
+  int(0)\r
+  ["d"]=>\r
+  int(2)\r
+  ["h"]=>\r
+  int(0)\r
+  ["i"]=>\r
+  int(0)\r
+  ["s"]=>\r
+  int(0)\r
+  ["weekday"]=>\r
+  int(0)\r
+  ["weekday_behavior"]=>\r
+  int(0)\r
+  ["first_last_day_of"]=>\r
+  int(0)\r
+  ["invert"]=>\r
+  int(0)\r
+  ["days"]=>\r
+  int(2)\r
+  ["special_type"]=>\r
+  int(0)\r
+  ["special_amount"]=>\r
+  int(0)\r
+  ["have_weekday_relative"]=>\r
+  int(0)\r
+  ["have_special_relative"]=>\r
+  int(0)\r
+}\r
+int(0)\r
+int(0)\r
+int(2)\r
+int(0)\r
+int(0)\r
+int(0)\r
+int(0)\r
+int(2)\r
+==DONE==\r
index 865928dd839f16af1518494c49301be92a93e0e5..7045cd7781fdf7cb3c8e173be802481c00a84141 100644 (file)
@@ -34,7 +34,7 @@ object(DateInterval)#1 (%d) {
   ["special_type"]=>
   int(0)
   ["special_amount"]=>
-  string(1) "0"
+  int(0)
   ["have_weekday_relative"]=>
   int(0)
   ["have_special_relative"]=>
index 3f3d1da7a80672375535a02ea6115207411c7444..a908cdba758a49ebef0a4a942455dcac5c16663e 100644 (file)
@@ -50,11 +50,11 @@ object(DateInterval)#3 (15) {
   ["invert"]=>
   int(0)
   ["days"]=>
-  string(2) "33"
+  int(33)
   ["special_type"]=>
   int(0)
   ["special_amount"]=>
-  string(1) "0"
+  int(0)
   ["have_weekday_relative"]=>
   int(0)
   ["have_special_relative"]=>