File tree 2 files changed +9
-7
lines changed
2 files changed +9
-7
lines changed Original file line number Diff line number Diff line change @@ -738,7 +738,7 @@ PHP_FUNCTION(unpack)
738
738
issigned = input [inputpos + (machine_little_endian ? (sizeof (int ) - 1 ) : 0 )] & 0x80 ;
739
739
} else if (sizeof (long ) > 4 && (input [inputpos + machine_endian_long_map [3 ]] & 0x80 ) == 0x80 ) {
740
740
v = ~INT_MAX ;
741
- }
741
+ }
742
742
743
743
v |= php_unpack (& input [inputpos ], sizeof (int ), issigned , int_map );
744
744
add_assoc_long (return_value , n , v );
@@ -753,15 +753,17 @@ PHP_FUNCTION(unpack)
753
753
int * map = machine_endian_long_map ;
754
754
long v = 0 ;
755
755
756
- if (type == 'l' ) {
756
+ if (type == 'l' || type == 'L' ) {
757
757
issigned = input [inputpos + (machine_little_endian ? 3 : 0 )] & 0x80 ;
758
758
} else if (type == 'N' ) {
759
+ issigned = input [inputpos ] & 0x80 ;
759
760
map = big_endian_long_map ;
760
761
} else if (type == 'V' ) {
762
+ issigned = input [inputpos + 3 ] & 0x80 ;
761
763
map = little_endian_long_map ;
762
764
}
763
765
764
- if (sizeof (long ) > 4 && ( input [ inputpos + machine_endian_long_map [ 3 ]] & 0x80 ) == 0x80 ) {
766
+ if (sizeof (long ) > 4 && issigned ) {
765
767
v = ~INT_MAX ;
766
768
}
767
769
Original file line number Diff line number Diff line change @@ -145,7 +145,7 @@ Array
145
145
)
146
146
Array
147
147
(
148
- [1] => 0
148
+ [1] => -1
149
149
)
150
150
Array
151
151
(
@@ -185,7 +185,7 @@ Array
185
185
)
186
186
Array
187
187
(
188
- [1] => 0
188
+ [1] => -1
189
189
)
190
190
Array
191
191
(
@@ -233,7 +233,7 @@ Array
233
233
)
234
234
Array
235
235
(
236
- [1] => 0
236
+ [1] => -1
237
237
)
238
238
Array
239
239
(
@@ -305,7 +305,7 @@ Array
305
305
)
306
306
Array
307
307
(
308
- [1] => 0
308
+ [1] => -1
309
309
)
310
310
Array
311
311
(
You can’t perform that action at this time.
0 commit comments