]> granicus.if.org Git - php/commitdiff
MFB: Fixed bug #47564 (unpacking unsigned long 32bit bit endian returns
authorIlia Alshanetsky <iliaa@php.net>
Tue, 12 May 2009 12:37:52 +0000 (12:37 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Tue, 12 May 2009 12:37:52 +0000 (12:37 +0000)
wrong result)

ext/standard/pack.c
ext/standard/tests/strings/bug38770.phpt

index 11bd899587eec12859713fa4f6b796e10ebf013f..605aede826d8a85e2d20018b0ca4514a44e0eca1 100644 (file)
@@ -777,6 +777,13 @@ PHP_FUNCTION(unpack)
                                                }
 
                                                v |= php_unpack(&input[inputpos], 4, issigned, map);
+                                               if (sizeof(long) > 4) {
+                                                       if (type == 'l') {
+                                                               v = (signed int) v; 
+                                                       } else {
+                                                               v = (unsigned int) v;
+                                                       }
+                                               }
                                                add_rt_assoc_long(return_value, n, v);
                                                break;
                                        }
index efadf879c7e50be83c1891b2277b65e838092195..6d2d75f2786bbac8fa3b9cc20e3656b9e4a1c472 100644 (file)
@@ -12,7 +12,7 @@ echo "Done\n";
 --EXPECT--
 Array
 (
-    [1] => -30000
+    [1] => 4294937296
 )
 Array
 (