summaryrefslogtreecommitdiff
path: root/op.c
diff options
context:
space:
mode:
authorFather Chrysostomos <sprout@cpan.org>2015-03-01 13:26:52 -0800
committerFather Chrysostomos <sprout@cpan.org>2015-03-01 13:26:52 -0800
commit71488339f94f1083d9e4d8f9014f5c979ba1a6d6 (patch)
treeb13bdd07f8ae3d8ef22f3f83d3af1958cc725319 /op.c
parent6b2b48acae2d74dcbde18f956f6951b5b9aa468b (diff)
downloadperl-71488339f94f1083d9e4d8f9014f5c979ba1a6d6.tar.gz
[perl #123821] Fix assert fail with \(&$0)=0
If the operand of a reference constructor that is assigned to is not valid, then S_lvref (in op.c) queues an error and does not bother to convert the op into an lvref op. This causes problems, since we have already set lvref-specific flags on the op in the expectation that its type will change. We get assertion failures later when freeing the op, because of the invalid flags. Instead of bailing out when we have an error like this, just continue processing it, as we do in many other places.
Diffstat (limited to 'op.c')
-rw-r--r--op.c1
1 files changed, 0 insertions, 1 deletions
diff --git a/op.c b/op.c
index b2b8ae6154..0a01e6cf88 100644
--- a/op.c
+++ b/op.c
@@ -2731,7 +2731,6 @@ S_lvref(pTHX_ OP *o, I32 type)
? "do block"
: OP_DESC(o),
PL_op_desc[type]));
- return;
}
CHANGE_TYPE(o, OP_LVREF);
o->op_private &=