Retract #11055, didn't help much (2736 bytes vs 2725 bytes leaked).
Jarkko Hietaniemi [Mon, 2 Jul 2001 17:46:31 +0000 (17:46 +0000)]
The real fix must be more involved.  The line of code all the leaky
call stacks seem to go through is op.c:2949, the PmopSTASH_set()
line of Perl_newPMOP().

p4raw-id: //depot/perl@11099

op.h

diff --git a/op.h b/op.h
index 2d4786d..497a997 100644 (file)
--- a/op.h
+++ b/op.h
@@ -277,7 +277,7 @@ struct pmop {
 
 #ifdef USE_ITHREADS
 #  define PmopSTASHPV(o)       ((o)->op_pmstashpv)
-#  define PmopSTASHPV_set(o,pv)        (Safefree((o)->op_pmstashpv), (o)->op_pmstashpv = ((pv) ? savepv(pv) : Nullch))
+#  define PmopSTASHPV_set(o,pv)        ((o)->op_pmstashpv = ((pv) ? savepv(pv) : Nullch))
 #  define PmopSTASH(o)         (PmopSTASHPV(o) \
                                 ? gv_stashpv(PmopSTASHPV(o),GV_ADD) : Nullhv)
 #  define PmopSTASH_set(o,hv)  PmopSTASHPV_set(o, (hv) ? HvNAME(hv) : Nullch)