summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pp.c4
-rwxr-xr-xt/op/pack.t10
2 files changed, 9 insertions, 5 deletions
diff --git a/pp.c b/pp.c
index 60cb4175e7..9df4c9795a 100644
--- a/pp.c
+++ b/pp.c
@@ -2913,13 +2913,13 @@ static const char uuemap[] =
static char uudmap[256]; /* Initialised on first use */
#if 'I' == 73 && 'J' == 74
/* On an ASCII/ISO kind of system */
-#define ISUUCHAR(ch) ((ch) > ' ' && (ch) < 'a')
+#define ISUUCHAR(ch) ((ch) >= ' ' && (ch) < 'a')
#else
/*
Some other sort of character set - use memchr() so we don't match
the null byte.
*/
-#define ISUUCHAR(ch) (memchr(uuemap, (ch), sizeof(uuemap)-1))
+#define ISUUCHAR(ch) (memchr(uuemap, (ch), sizeof(uuemap)-1) || (ch) == ' ')
#endif
PP(pp_unpack)
diff --git a/t/op/pack.t b/t/op/pack.t
index 02efb66717..c821ed6c04 100755
--- a/t/op/pack.t
+++ b/t/op/pack.t
@@ -161,16 +161,20 @@ foreach my $t (@templates) {
# 57..58: uuencode/decode
$in = join "", map { chr } 0..255;
+
+# just to be anal, we do some random tr/`/ /
$uu = <<'EOUU';
-M``$"`P0%!@<("0H+#`T.#Q`1$A,4%187&!D:&QP='A\@(2(C)"4F)R@I*BLL
+M` $"`P0%!@<("0H+# T.#Q`1$A,4%187&!D:&QP='A\@(2(C)"4F)R@I*BLL
M+2XO,#$R,S0U-C<X.3H[/#T^/T!!0D-$149'2$E*2TQ-3D]045)35%565UA9
M6EM<75Y?8&%B8V1E9F=H:6IK;&UN;W!Q<G-T=79W>'EZ>WQ]?G^`@8*#A(6&
MAXB)BHN,C8Z/D)&2DY25EI>8F9J;G)V>GZ"AHJ.DI::GJ*FJJZRMKJ^PL;*S
MM+6VM[BYNKN\O;Z_P,'"P\3%QL?(R<K+S,W.S]#1TM/4U=;7V-G:V]S=WM_@
-?X>+CY.7FY^CIZNOL[>[O\/'R\_3U]O?X^?K[_/W^_P``
+?X>+CY.7FY^CIZNOL[>[O\/'R\_3U]O?X^?K[_/W^_P `
EOUU
-print "not " unless pack('u', $in) eq $uu;
+$_ = $uu;
+tr/ /`/;
+print "not " unless pack('u', $in) eq $_;
print "ok ", $test++, "\n";
print "not " unless unpack('u', $uu) eq $in;