diff options
author | Larry Wall <lwall@scalpel.netlabs.com> | 1995-01-13 10:28:56 -0800 |
---|---|---|
committer | Andy Dougherty <doughera@lafcol.lafayette.edu> | 1995-01-11 19:01:11 +0000 |
commit | adbc6bb137ce1026e8a7cba251bb82b41f398aae (patch) | |
tree | ec39556272514becaaba581543e7582d62230879 /perl.c | |
parent | a0a2876f4683eca6ebc96f52b47823a87dd0ac4a (diff) | |
download | perl-adbc6bb137ce1026e8a7cba251bb82b41f398aae.tar.gz |
"unofficial" patches for some of the more spectacular [memory leaks]
To: Simon Parsons <S.Parsons@fulcrum.co.uk>
: I am on a Sun sparc running Solaris 5.3 / 5.4
:
: Are there any patches available for perl5.000, or a list of know bugs?
: I am having problems with a script running out of memory, which may be
: causes by memory leaks. The process size grows steadily up to approx
: 8Meg (over a couple of minutes) an then grows to approx 22Meg (in 2 or
: 3 seconds) before running out of memory. purify indicates memory
: leaks, but I am not sure whether this is as a result of perl
: abandoning memory as it exits.
5.001 will contain fixes for a number of memory leaks. Here are some
unofficial patches for some of the more spectacular ones. The one
for sv.c is the likeliest one to be affecting you, unless you're doing
a lot of evals.
Diffstat (limited to 'perl.c')
-rw-r--r-- | perl.c | 14 |
1 files changed, 7 insertions, 7 deletions
@@ -1045,8 +1045,9 @@ init_main_stash() GV *gv; curstash = defstash = newHV(); curstname = newSVpv("main",4); - GvHV(gv = gv_fetchpv("main::",TRUE, SVt_PVHV)) = - (HV*)SvREFCNT_inc(defstash); + gv = gv_fetchpv("main::",TRUE, SVt_PVHV); + SvREFCNT_dec(GvHV(gv)); + GvHV(gv) = (HV*)SvREFCNT_inc(defstash); SvREADONLY_on(gv); HvNAME(defstash) = savepv("main"); incgv = gv_HVadd(gv_AVadd(gv_fetchpv("INC",TRUE, SVt_PVAV))); @@ -1054,8 +1055,7 @@ init_main_stash() defgv = gv_fetchpv("_",TRUE, SVt_PVAV); curstash = defstash; compiling.cop_stash = defstash; - debstash = newHV(); - GvHV(gv_fetchpv("DB::", GV_ADDMULTI, SVt_PVHV)) = debstash; + debstash = GvHV(gv_fetchpv("DB::", GV_ADDMULTI, SVt_PVHV)); } #ifdef CAN_PROTOTYPE @@ -1541,7 +1541,7 @@ init_predump_symbols() stdingv = gv_fetchpv("STDIN",TRUE, SVt_PVIO); SvMULTI_on(stdingv); IoIFP(GvIOp(stdingv)) = stdin; - tmpgv = gv_fetchpv("stdin",TRUE, SVt_PVIO); + tmpgv = gv_fetchpv("stdin",TRUE, SVt_PV); GvIOp(tmpgv) = (IO*)SvREFCNT_inc(GvIOp(stdingv)); SvMULTI_on(tmpgv); @@ -1549,14 +1549,14 @@ init_predump_symbols() SvMULTI_on(tmpgv); IoOFP(GvIOp(tmpgv)) = IoIFP(GvIOp(tmpgv)) = stdout; defoutgv = tmpgv; - tmpgv = gv_fetchpv("stdout",TRUE, SVt_PVIO); + tmpgv = gv_fetchpv("stdout",TRUE, SVt_PV); GvIOp(tmpgv) = (IO*)SvREFCNT_inc(GvIOp(defoutgv)); SvMULTI_on(tmpgv); othergv = gv_fetchpv("STDERR",TRUE, SVt_PVIO); SvMULTI_on(othergv); IoOFP(GvIOp(othergv)) = IoIFP(GvIOp(othergv)) = stderr; - tmpgv = gv_fetchpv("stderr",TRUE, SVt_PVIO); + tmpgv = gv_fetchpv("stderr",TRUE, SVt_PV); GvIOp(tmpgv) = (IO*)SvREFCNT_inc(GvIOp(othergv)); SvMULTI_on(tmpgv); |