summaryrefslogtreecommitdiff
path: root/pp_ctl.c
diff options
context:
space:
mode:
authorAndy Dougherty <doughera@lafcol.lafayette.edu>1995-06-06 01:41:07 +0000
committerAndy Dougherty <doughera@lafcol.lafayette.edu>1995-06-06 01:41:07 +0000
commit4aa0a1f7324b8447469670a1b2427c3ac2428bae (patch)
treef47ecacdb42503ee8ea8e4984302ab1aaad85431 /pp_ctl.c
parent005c1a0e007f6f2f3efe461d6a5930a88ccb88fb (diff)
downloadperl-4aa0a1f7324b8447469670a1b2427c3ac2428bae.tar.gz
This is my patch patch.1l for perl5.001.
To apply, change to your perl directory, run the command above, then apply with patch -p1 -N < thispatch. This patch fixes all the Configure & build problems for which I have a solution. After you apply this patch, I would recommend: make distclean # or at the very least rm config.sh sh Configure [whatever options you use] make depend make make test Patch and enjoy, Andy Dougherty doughera@lafcol.lafayette.edu Dept. of Physics Lafayette College, Easton PA 18042 Here are the file-by-file contents: Changes.Conf Updated a bit. Configure Now honors hints on <pwd.h>-related things (for CX/UX, in particular). Now honors previous values of d_stdio_ptr_lval and d_stdio_cnt_lval. DB test programs now conditionally include 'const'. MANIFEST Updated. config_H Updated. config_h.SH Include trailing /**/ on STDIO_..._LVALUE defines. hints/cxux.sh Simplified. Include info about failing test. hints/epix.sh A guess at a dynamic loading fix. hints/next_3.sh Add a few comments. lib/Benchmark.pm Ensure numeric context on number of loop iterations. op.c Spider's padlex and goto &$nonesuch patches. perl.c fputs("\tUnofficial patchlevel 1l.\n",stdout); pp_ctl.c pp_hot.c scope.c Spider's padlex and goto &$nonesuch patches.
Diffstat (limited to 'pp_ctl.c')
-rw-r--r--pp_ctl.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/pp_ctl.c b/pp_ctl.c
index a2dc38ee77..cb521b4bdb 100644
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -1533,6 +1533,15 @@ PP(pp_goto)
I32 items = 0;
I32 oldsave;
+ if (!CvROOT(cv) && !CvXSUB(cv)) {
+ if (CvGV(cv)) {
+ SV *tmpstr = sv_newmortal();
+ gv_efullname(tmpstr, CvGV(cv));
+ DIE("Goto undefined subroutine &%s",SvPVX(tmpstr));
+ }
+ DIE("Goto undefined subroutine");
+ }
+
/* First do some returnish stuff. */
cxix = dopoptosub(cxstack_ix);
if (cxix < 0)
@@ -1591,7 +1600,7 @@ PP(pp_goto)
GvENAME(CvGV(cv)));
if (CvDEPTH(cv) > AvFILL(padlist)) {
AV *newpad = newAV();
- AV *oldpad = (AV*)AvARRAY(svp[CvDEPTH(cv)-1]);
+ SV **oldpad = AvARRAY(svp[CvDEPTH(cv)-1]);
I32 ix = AvFILL((AV*)svp[1]);
svp = AvARRAY(svp[0]);
for ( ;ix > 0; ix--) {
@@ -1600,7 +1609,7 @@ PP(pp_goto)
if (SvFLAGS(svp[ix]) & SVf_FAKE) {
/* outer lexical? */
av_store(newpad, ix,
- SvREFCNT_inc(AvARRAY(oldpad)[ix]) );
+ SvREFCNT_inc(oldpad[ix]) );
}
else { /* our own lexical */
if (*name == '@')