From owner-perl5-porters@nicoh.com Tue Mar 14 00:23:11 1995 Return-Path: Message-Id: <9503132355.AA25435@scalpel> To: lusol@turkey.cc.lehigh.edu (Stephen O. Lidie) Cc: perl5-porters@africa.nicoh.com Subject: Re: 5.001, findlex patch In-Reply-To: Your message of "Mon, 13 Mar 95 18:34:19 EST." <9503132334.AA13362@Turkey.CC.Lehigh.EDU> Date: Mon, 13 Mar 95 15:55:18 -0800 From: lwall@scalpel.netlabs.com (Larry Wall) Sender: owner-perl5-porters@nicoh.com List-Name: perl5-porters Precedence: bulk P-From: Larry Wall : There were some warnings (AIX, xlc compiler): Here's a cleaner version of the official unofficial patch, based on 5.001. *** op.c@@/V5.001 Sun Mar 12 18:37:21 1995 --- op.c Mon Mar 13 15:03:34 1995 *************** *** 118,123 **** --- 118,124 ---- } static PADOFFSET + #ifndef CAN_PROTOTYPE pad_findlex(name, newoff, seq, startcv, cx_ix) char *name; PADOFFSET newoff; *************** *** 124,129 **** --- 125,133 ---- I32 seq; CV* startcv; I32 cx_ix; + #else + pad_findlex(char *name, PADOFFSET newoff, I32 seq, CV* startcv, I32 cx_ix) + #endif { CV *cv; I32 off; *************** *** 2638,2643 **** --- 2642,2649 ---- } SvREFCNT_dec(CvGV(cv)); CvGV(cv) = Nullgv; + SvREFCNT_dec(CvOUTSIDE(cv)); + CvOUTSIDE(cv) = Nullcv; LEAVE; } } *************** *** 2669,2675 **** CvSTASH(cv) = CvSTASH(proto); CvROOT(cv) = CvROOT(proto); CvSTART(cv) = CvSTART(proto); ! CvOUTSIDE(cv) = CvOUTSIDE(proto); comppad = newAV(); --- 2675,2682 ---- CvSTASH(cv) = CvSTASH(proto); CvROOT(cv) = CvROOT(proto); CvSTART(cv) = CvSTART(proto); ! if (CvOUTSIDE(proto)) ! CvOUTSIDE(cv) = (CV*)SvREFCNT_inc((SV*)CvOUTSIDE(proto)); comppad = newAV(); *************** *** 2752,2757 **** --- 2759,2765 ---- SvREFCNT_dec(CvGV(cv)); } CvOUTSIDE(cv) = CvOUTSIDE(compcv); + CvOUTSIDE(compcv) = 0; CvPADLIST(cv) = CvPADLIST(compcv); SvREFCNT_dec(compcv); } *** sv.c@@/V5.001 Sun Mar 12 19:31:18 1995 --- sv.c Mon Mar 13 15:04:13 1995 *************** *** 3358,3363 **** --- 3358,3364 ---- fprintf(stderr, " FILEGV = 0x%lx\n", (long)CvFILEGV(sv)); fprintf(stderr, " DEPTH = %ld\n", (long)CvDEPTH(sv)); fprintf(stderr, " PADLIST = 0x%lx\n", (long)CvPADLIST(sv)); + fprintf(stderr, " OUTSIDE = 0x%lx\n", (long)CvOUTSIDE(sv)); if (type == SVt_PVFM) fprintf(stderr, " LINES = %ld\n", (long)FmLINES(sv)); break; *** toke.c@@/V5.001 Sun Mar 12 17:26:48 1995 --- toke.c Mon Mar 13 15:52:31 1995 *************** *** 4633,4638 **** --- 4633,4641 ---- CV* outsidecv = compcv; AV* comppadlist; + if (compcv) { + assert(SvTYPE(compcv) == SVt_PVCV); + } save_I32(&subline); save_item(subname); SAVEINT(padix); *************** *** 4665,4671 **** av_store(comppadlist, 1, SvREFCNT_inc((SV*)comppad)); CvPADLIST(compcv) = comppadlist; ! CvOUTSIDE(compcv) = outsidecv; return oldsavestack_ix; } --- 4668,4674 ---- av_store(comppadlist, 1, SvREFCNT_inc((SV*)comppad)); CvPADLIST(compcv) = comppadlist; ! CvOUTSIDE(compcv) = (CV*)SvREFCNT_inc((SV*)outsidecv); return oldsavestack_ix; }