summaryrefslogtreecommitdiff
path: root/lib/B/Op_private.pm
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2015-02-06 10:14:47 -0800
committerFather Chrysostomos <sprout@cpan.org>2015-02-06 10:14:47 -0800
commitfb0c7c3c47fb17bb0b685b957af9a0cc581c8996 (patch)
tree0703db1d1eb07eaa79a426915f889d1d254c3208 /lib/B/Op_private.pm
parent488bc5795891132d29daec7a860cab2a6266230c (diff)
downloadperl-fb0c7c3c47fb17bb0b685b957af9a0cc581c8996.tar.gz
[perl #123753] Fix assertion failure with map+map
ck_grep calls ck_fun, which sets the lower private bits to indicate the number of operands. ck_grep usually undoes that, by clobbering op_private completetly. If an error has occurred, it doesn’t, so we may fail an assertion if the lower bits are not expected to be set on mapstart and grepstart.
Diffstat (limited to 'lib/B/Op_private.pm')
-rw-r--r--lib/B/Op_private.pm2
1 files changed, 2 insertions, 0 deletions
diff --git a/lib/B/Op_private.pm b/lib/B/Op_private.pm
index 03a5a83647..e1cc2ce307 100644
--- a/lib/B/Op_private.pm
+++ b/lib/B/Op_private.pm
@@ -349,6 +349,7 @@ $bits{gpbyname}{0} = $bf[0];
@{$bits{gpbynumber}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
$bits{gpwnam}{0} = $bf[0];
$bits{gpwuid}{0} = $bf[0];
+$bits{grepstart}{0} = $bf[0];
$bits{grepwhile}{0} = $bf[0];
@{$bits{gsbyname}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
@{$bits{gsbyport}}{3,2,1,0} = ($bf[3], $bf[3], $bf[3], $bf[3]);
@@ -404,6 +405,7 @@ $bits{lstat}{0} = $bf[0];
@{$bits{lt}}{1,0} = ($bf[1], $bf[1]);
$bits{lvavref}{0} = $bf[0];
@{$bits{lvref}}{5,4,0} = ($bf[7], $bf[7], $bf[0]);
+$bits{mapstart}{0} = $bf[0];
$bits{mapwhile}{0} = $bf[0];
$bits{method}{0} = $bf[0];
$bits{method_named}{0} = $bf[0];