diff options
| author | Brian Shire <shire@php.net> | 2007-04-03 19:50:40 +0000 |
|---|---|---|
| committer | Brian Shire <shire@php.net> | 2007-04-03 19:50:40 +0000 |
| commit | bd4add59f72a7f7576611a1d3d680bbf371c1e3e (patch) | |
| tree | 4b0d8b0053aba4304840541935a47062fdb225f5 | |
| parent | 02919242227831af6cc7e6c5e9fef0354f2992b4 (diff) | |
| download | php-git-bd4add59f72a7f7576611a1d3d680bbf371c1e3e.tar.gz | |
correction for previous fix to bug #38770 (pack/unpack is broken on 64bit)
fix pack test, correct space to tabs
| -rw-r--r-- | ext/standard/pack.c | 8 | ||||
| -rw-r--r-- | ext/standard/tests/strings/pack.phpt | 8 |
2 files changed, 9 insertions, 7 deletions
diff --git a/ext/standard/pack.c b/ext/standard/pack.c index 569266ea1a..15924dba04 100644 --- a/ext/standard/pack.c +++ b/ext/standard/pack.c @@ -760,7 +760,7 @@ PHP_FUNCTION(unpack) issigned = input[inputpos + (machine_little_endian ? (sizeof(int) - 1) : 0)] & 0x80; } else if (sizeof(long) > 4 && (input[inputpos + machine_endian_long_map[3]] & 0x80) == 0x80) { v = ~INT_MAX; - } + } v |= php_unpack(&input[inputpos], sizeof(int), issigned, int_map); add_assoc_long(return_value, n, v); @@ -775,15 +775,17 @@ PHP_FUNCTION(unpack) int *map = machine_endian_long_map; long v = 0; - if (type == 'l') { + if (type == 'l' || type == 'L') { issigned = input[inputpos + (machine_little_endian ? 3 : 0)] & 0x80; } else if (type == 'N') { + issigned = input[inputpos] & 0x80; map = big_endian_long_map; } else if (type == 'V') { + issigned = input[inputpos + 3] & 0x80; map = little_endian_long_map; } - if (sizeof(long) > 4 && (input[inputpos + machine_endian_long_map[3]] & 0x80) == 0x80) { + if (sizeof(long) > 4 && issigned) { v = ~INT_MAX; } diff --git a/ext/standard/tests/strings/pack.phpt b/ext/standard/tests/strings/pack.phpt index b36eee1e57..60b546fce6 100644 --- a/ext/standard/tests/strings/pack.phpt +++ b/ext/standard/tests/strings/pack.phpt @@ -145,7 +145,7 @@ Array ) Array ( - [1] => 0 + [1] => -1 ) Array ( @@ -185,7 +185,7 @@ Array ) Array ( - [1] => 0 + [1] => -1 ) Array ( @@ -233,7 +233,7 @@ Array ) Array ( - [1] => 0 + [1] => -1 ) Array ( @@ -305,7 +305,7 @@ Array ) Array ( - [1] => 0 + [1] => -1 ) Array ( |
