summaryrefslogtreecommitdiff
path: root/cop.h
diff options
context:
space:
mode:
authorGurusamy Sarathy <gsar@cpan.org>2000-03-11 18:11:22 +0000
committerGurusamy Sarathy <gsar@cpan.org>2000-03-11 18:11:22 +0000
commit1d76a5c36fe33e7755afd0f03faf19826beda303 (patch)
treeb465978813ba48e23662c45b02420d15e7ae2de7 /cop.h
parent6b7b8867bcd9dae4737a0f8210ca9785c63634b8 (diff)
downloadperl-1d76a5c36fe33e7755afd0f03faf19826beda303.tar.gz
change#3511 was not defensive enough about try blocks, causing
bogus attempts to free closures, and thence, segfaults p4raw-link: @3511 on //depot/perl: 067f92a0e46641b4b3e89afcde43bf134105f7b7 p4raw-id: //depot/perl@5658
Diffstat (limited to 'cop.h')
-rw-r--r--cop.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/cop.h b/cop.h
index 2f1f676c0c..5dd937e7d4 100644
--- a/cop.h
+++ b/cop.h
@@ -361,6 +361,7 @@ struct context {
/* private flags for CXt_EVAL */
#define CXp_REAL 0x00000100 /* truly eval'', not a lookalike */
+#define CXp_TRYBLOCK 0x00000200 /* eval{}, not eval'' or similar */
#ifdef USE_ITHREADS
/* private flags for CXt_LOOP */
@@ -374,6 +375,8 @@ struct context {
#define CxTYPE(c) ((c)->cx_type & CXTYPEMASK)
#define CxREALEVAL(c) (((c)->cx_type & (CXt_EVAL|CXp_REAL)) \
== (CXt_EVAL|CXp_REAL))
+#define CxTRYBLOCK(c) (((c)->cx_type & (CXt_EVAL|CXp_TRYBLOCK)) \
+ == (CXt_EVAL|CXp_TRYBLOCK))
#define CXINC (cxstack_ix < cxstack_max ? ++cxstack_ix : (cxstack_ix = cxinc()))