diff options
author | Dave Mitchell <davem@fdisolutions.com> | 2004-10-29 21:04:17 +0000 |
---|---|---|
committer | Dave Mitchell <davem@fdisolutions.com> | 2004-10-29 21:04:17 +0000 |
commit | b34c0dd4a7081ed822e2197d6a723d2ab2fdfc86 (patch) | |
tree | 79e12d9672fac988f06daf38b445e954c784b00e /regcomp.c | |
parent | 2d8d5d5aa55d3bc73a36db1fc2d8bcfe8bb20516 (diff) | |
download | perl-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 'regcomp.c')
-rw-r--r-- | regcomp.c | 5 |
1 files changed, 5 insertions, 0 deletions
@@ -4983,9 +4983,14 @@ Perl_pregfree(pTHX_ struct regexp *r) (SvTYPE(new_comppad) == SVt_PVAV) ? new_comppad : Null(PAD *) ); + OP_REFCNT_LOCK; if (!OpREFCNT_dec((OP_4tree*)r->data->data[n])) { + OP_REFCNT_UNLOCK; op_free((OP_4tree*)r->data->data[n]); } + else { + OP_REFCNT_UNLOCK; + } PAD_RESTORE_LOCAL(old_comppad); SvREFCNT_dec((SV*)new_comppad); |