summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Shire <shire@php.net>2007-04-03 19:50:40 +0000
committerBrian Shire <shire@php.net>2007-04-03 19:50:40 +0000
commitbd4add59f72a7f7576611a1d3d680bbf371c1e3e (patch)
tree4b0d8b0053aba4304840541935a47062fdb225f5
parent02919242227831af6cc7e6c5e9fef0354f2992b4 (diff)
downloadphp-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.c8
-rw-r--r--ext/standard/tests/strings/pack.phpt8
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
(