difforig perl-5.10.0/pp_pack.c perl-5.10.0/t/op/pack.t

2008-02-08  Reini Urban <rurban@x-ray.at>

diff -ub perl-5.10.0/pp_pack.c.orig perl-5.10.0/pp_pack.c
--- perl-5.10.0/pp_pack.c.orig	2007-12-18 10:47:07.000000000 +0000
+++ perl-5.10.0/pp_pack.c	2008-02-08 15:51:20.306517000 +0000
@@ -1258,6 +1258,7 @@
 	    symptr->previous = &savsym;
             symptr->level++;
 	    PUTBACK;
+	    if (len && unpack_only_one) len = 1;
 	    while (len--) {
   	        symptr->patptr = savsym.grpbeg;
 		if (utf8) symptr->flags |=  FLAG_PARSE_UTF8;
diff -ub perl-5.10.0/t/op/pack.t.orig perl-5.10.0/t/op/pack.t
--- perl-5.10.0/t/op/pack.t.orig	2007-12-18 10:47:08.000000000 +0000
+++ perl-5.10.0/t/op/pack.t	2008-02-08 15:52:09.790892000 +0000
@@ -12,7 +12,7 @@
 my $no_signedness = $] > 5.009 ? '' :
   "Signed/unsigned pack modifiers not available on this perl";
 
-plan tests => 14696;
+plan tests => 14697;
 
 use strict;
 use warnings qw(FATAL all);
@@ -1980,3 +1980,8 @@
     is(unpack('@!4 a*', "\x{301}\x{302}\x{303}\x{304}\x{305}"),
        "\x{303}\x{304}\x{305}", 'Test basic utf8 @!');
 }
+{
+    #50256
+    my ($v) = split //, unpack ('(B)*', 'ab');
+    is($v, 0); # Doesn't SEGV :-)
+}

