diff options
author | Father Chrysostomos <sprout@cpan.org> | 2015-03-01 13:26:52 -0800 |
---|---|---|
committer | Father Chrysostomos <sprout@cpan.org> | 2015-03-01 13:26:52 -0800 |
commit | 71488339f94f1083d9e4d8f9014f5c979ba1a6d6 (patch) | |
tree | b13bdd07f8ae3d8ef22f3f83d3af1958cc725319 /op.c | |
parent | 6b2b48acae2d74dcbde18f956f6951b5b9aa468b (diff) | |
download | perl-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.c | 1 |
1 files changed, 0 insertions, 1 deletions
@@ -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 &= |