Skip to content

Commit

Permalink
Fix (and test) spaces in {,un}pack()
Browse files Browse the repository at this point in the history
  • Loading branch information
Chip Salzenberg authored and Chip Salzenberg committed Apr 18, 1997
1 parent debf908 commit bbdab04
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 5 deletions.
12 changes: 8 additions & 4 deletions pp.c
Expand Up @@ -2682,7 +2682,9 @@ PP(pp_unpack)
}
while (pat < patend) {
reparse:
datumtype = *pat++;
datumtype = *pat++ & 0xFF;
if (isSPACE(datumtype))
continue;
if (pat >= patend)
len = 1;
else if (*pat == '*') {
Expand All @@ -2698,7 +2700,7 @@ PP(pp_unpack)
len = (datumtype != '@');
switch(datumtype) {
default:
croak("Invalid type in unpack: '%c'", datumtype);
croak("Invalid type in unpack: '%c'", (int)datumtype);
case '%':
if (len == 1 && pat[-1] != '1')
len = 16;
Expand Down Expand Up @@ -3460,7 +3462,9 @@ PP(pp_pack)
sv_setpvn(cat, "", 0);
while (pat < patend) {
#define NEXTFROM (items-- > 0 ? *MARK++ : &sv_no)
datumtype = *pat++;
datumtype = *pat++ & 0xFF;
if (isSPACE(datumtype))
continue;
if (*pat == '*') {
len = strchr("@Xxu", datumtype) ? 0 : items;
pat++;
Expand All @@ -3474,7 +3478,7 @@ PP(pp_pack)
len = 1;
switch(datumtype) {
default:
croak("Invalid type in pack: '%c'", datumtype);
croak("Invalid type in pack: '%c'", (int)datumtype);
case '%':
DIE("%% may only be used in unpack");
case '@':
Expand Down
2 changes: 1 addition & 1 deletion t/op/pack.t
Expand Up @@ -4,7 +4,7 @@

print "1..25\n";

$format = "c2x5CCxsdila6";
$format = "c2 x5 C C x s d i l a6";
# Need the expression in here to force ary[5] to be numeric. This avoids
# test2 failing because ary2 goes str->numeric->str and ary doesn't.
@ary = (1,-100,127,128,32767,987.654321098 / 100.0,12345,123456,"abcdef");
Expand Down

0 comments on commit bbdab04

Please sign in to comment.