diff options
author | Larry Wall <lwall@netlabs.com> | 1995-03-13 15:55:18 -0800 |
---|---|---|
committer | Andy Dougherty <doughera@lafcol.lafayette.edu> | 1995-03-15 12:25:31 +1300 |
commit | e9a444f0e2e25089238ff153c447ef9ed7d3f72c (patch) | |
tree | ff81c5562235acb456edc79efe9993889f184717 /op.c | |
parent | b355b4e0798f66a89bbfedc23cbec69c1dff3d33 (diff) | |
download | perl-e9a444f0e2e25089238ff153c447ef9ed7d3f72c.tar.gz |
cleaner version of the official unofficial patch
: There were some warnings (AIX, xlc compiler):
Here's a cleaner version of the official unofficial patch, based on 5.001.
Diffstat (limited to 'op.c')
-rw-r--r-- | op.c | 10 |
1 files changed, 9 insertions, 1 deletions
@@ -118,12 +118,16 @@ char *name; } static PADOFFSET +#ifndef CAN_PROTOTYPE pad_findlex(name, newoff, seq, startcv, cx_ix) char *name; PADOFFSET newoff; 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,6 +2642,8 @@ CV *cv; } SvREFCNT_dec(CvGV(cv)); CvGV(cv) = Nullgv; + SvREFCNT_dec(CvOUTSIDE(cv)); + CvOUTSIDE(cv) = Nullcv; LEAVE; } } @@ -2669,7 +2675,8 @@ CV* proto; CvSTASH(cv) = CvSTASH(proto); CvROOT(cv) = CvROOT(proto); CvSTART(cv) = CvSTART(proto); - CvOUTSIDE(cv) = CvOUTSIDE(proto); + if (CvOUTSIDE(proto)) + CvOUTSIDE(cv) = (CV*)SvREFCNT_inc((SV*)CvOUTSIDE(proto)); comppad = newAV(); @@ -2752,6 +2759,7 @@ OP *block; SvREFCNT_dec(CvGV(cv)); } CvOUTSIDE(cv) = CvOUTSIDE(compcv); + CvOUTSIDE(compcv) = 0; CvPADLIST(cv) = CvPADLIST(compcv); SvREFCNT_dec(compcv); } |