summaryrefslogtreecommitdiff
path: root/pad.c
diff options
context:
space:
mode:
authorDave Mitchell <davem@fdisolutions.com>2004-10-29 21:04:17 +0000
committerDave Mitchell <davem@fdisolutions.com>2004-10-29 21:04:17 +0000
commitb34c0dd4a7081ed822e2197d6a723d2ab2fdfc86 (patch)
tree79e12d9672fac988f06daf38b445e954c784b00e /pad.c
parent2d8d5d5aa55d3bc73a36db1fc2d8bcfe8bb20516 (diff)
downloadperl-b34c0dd4a7081ed822e2197d6a723d2ab2fdfc86.tar.gz
[perl #31851] Threading crash with closures
various OpREFCNT_inc() operations weren't doing locking p4raw-id: //depot/perl@23433
Diffstat (limited to 'pad.c')
-rw-r--r--pad.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/pad.c b/pad.c
index f1d15ab966..0c00cfff6b 100644
--- a/pad.c
+++ b/pad.c
@@ -1410,7 +1410,9 @@ Perl_cv_clone(pTHX_ CV *proto)
#endif
CvGV(cv) = CvGV(proto);
CvSTASH(cv) = CvSTASH(proto);
+ OP_REFCNT_LOCK;
CvROOT(cv) = OpREFCNT_inc(CvROOT(proto));
+ OP_REFCNT_UNLOCK;
CvSTART(cv) = CvSTART(proto);
CvOUTSIDE(cv) = (CV*)SvREFCNT_inc(outside);
CvOUTSIDE_SEQ(cv) = CvOUTSIDE_SEQ(proto);