summaryrefslogtreecommitdiff
path: root/op.c
diff options
context:
space:
mode:
authorLarry Wall <lwall@netlabs.com>1995-03-13 15:55:18 -0800
committerAndy Dougherty <doughera@lafcol.lafayette.edu>1995-03-15 12:25:31 +1300
commite9a444f0e2e25089238ff153c447ef9ed7d3f72c (patch)
treeff81c5562235acb456edc79efe9993889f184717 /op.c
parentb355b4e0798f66a89bbfedc23cbec69c1dff3d33 (diff)
downloadperl-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.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/op.c b/op.c
index b1f867feb0..8e664523dc 100644
--- a/op.c
+++ b/op.c
@@ -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);
}