summaryrefslogtreecommitdiff
path: root/op.c
diff options
context:
space:
mode:
authorNicholas Clark <nick@ccl4.org>2007-04-04 17:22:02 +0000
committerNicholas Clark <nick@ccl4.org>2007-04-04 17:22:02 +0000
commit3235b7a3ce519fbc8f77ac78f561cb023f680d6d (patch)
tree32ed675208f47b680d36f37ebc964d8467c246f0 /op.c
parent8d2d9fd75ab74bc7af4cecaf85f2b17730965d95 (diff)
downloadperl-3235b7a3ce519fbc8f77ac78f561cb023f680d6d.tar.gz
Get further through the build with read-only optrees. Free()ing cops
as currently implemented seems to want write activity to them. Also we save a field in PL_curcop at one point, and sometimes this can be in a read only COP. If so, the end of scope restoration is always to the same value, but it's easier to cheat and skip the restoration than to dig around and avoid the save. p4raw-id: //depot/perl@30843
Diffstat (limited to 'op.c')
-rw-r--r--op.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/op.c b/op.c
index 537322ae08..7c7e74f2f6 100644
--- a/op.c
+++ b/op.c
@@ -449,8 +449,12 @@ Perl_op_free(pTHX_ OP *o)
/* COP* is not cleared by op_clear() so that we may track line
* numbers etc even after null() */
- if (type == OP_NEXTSTATE || type == OP_SETSTATE || type == OP_DBSTATE)
+ if (type == OP_NEXTSTATE || type == OP_SETSTATE || type == OP_DBSTATE) {
+#ifdef PERL_DEBUG_READONLY_OPS
+ Slab_to_rw(o);
+#endif
cop_free((COP*)o);
+ }
op_clear(o);
if (o->op_latefree) {