From: Gurusamy Sarathy Date: Sat, 18 Jul 1998 01:17:28 +0000 (+0000) Subject: fix $/ init for multiple interpreters/threads X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=dc92893f11da1644967e0cba1816c77151a07426;p=p5sagit%2Fp5-mst-13.2.git fix $/ init for multiple interpreters/threads p4raw-id: //depot/perl@1523 --- diff --git a/ext/Thread/Thread.xs b/ext/Thread/Thread.xs index be1e7af..5d47cd0 100644 --- a/ext/Thread/Thread.xs +++ b/ext/Thread/Thread.xs @@ -158,6 +158,8 @@ threadstart(void *arg) Safefree(tmps_stack); Safefree(ofs); + SvREFCNT_dec(rs); + SvREFCNT_dec(nrs); SvREFCNT_dec(statname); Safefree(screamfirst); Safefree(screamnext); diff --git a/perl.c b/perl.c index 9e29975..fe1df90 100644 --- a/perl.c +++ b/perl.c @@ -164,9 +164,6 @@ perl_construct(register PerlInterpreter *sv_interp) SvREFCNT(&sv_yes) = (~(U32)0)/2; } - nrs = newSVpv("\n", 1); - rs = SvREFCNT_inc(nrs); - #ifdef PERL_OBJECT /* TODO: */ /* sighandlerp = sighandler; */ @@ -186,6 +183,9 @@ perl_construct(register PerlInterpreter *sv_interp) #endif } + nrs = newSVpv("\n", 1); + rs = SvREFCNT_inc(nrs); + init_stacks(ARGS); #ifdef MULTIPLICITY init_interp(); @@ -428,7 +428,10 @@ perl_destruct(register PerlInterpreter *sv_interp) Safefree(ors); /* $\ */ ors = Nullch; - SvREFCNT_dec(nrs); /* $\ helper */ + SvREFCNT_dec(rs); /* $/ */ + rs = Nullsv; + + SvREFCNT_dec(nrs); /* $/ helper */ nrs = Nullsv; multiline = 0; /* $* */ diff --git a/util.c b/util.c index 6f4bb6e..eb52ee5 100644 --- a/util.c +++ b/util.c @@ -2783,7 +2783,7 @@ new_struct_thread(struct perl_thread *t) tainted = t->Ttainted; curpm = t->Tcurpm; /* XXX No PMOP ref count */ nrs = newSVsv(t->Tnrs); - rs = newSVsv(t->Trs); + rs = SvREFCNT_inc(nrs); last_in_gv = (GV*)SvREFCNT_inc(t->Tlast_in_gv); ofslen = t->Tofslen; ofs = savepvn(t->Tofs, ofslen);