summaryrefslogtreecommitdiff
path: root/pp.c
diff options
context:
space:
mode:
authorPerl 5 Porters <perl5-porters@africa.nicoh.com>1997-01-16 07:24:00 +1200
committerChip Salzenberg <chip@atlantic.net>1997-01-16 07:24:00 +1200
commit44a8e56aa037ed0f03f0506f6f85f5ed290c78e1 (patch)
treecb236761929c3161f91de24c86322902758b6efb /pp.c
parent8227f81cbd3d53a745747c4247824562383badae (diff)
downloadperl-44a8e56aa037ed0f03f0506f6f85f5ed290c78e1.tar.gz
[inseparable changes from patch from perl5.003_20 to perl5.003_21]
BUILD PROCESS Subject: Make MachTen hints file warn about db-recno failures Date: Wed, 8 Jan 1997 12:07:18 +0100 From: Dominic Dunlop <domo@slipper.ip.lu> Files: hints/machten.sh Msg-ID: <v03010d00aef92fba6aca@[194.51.248.78]> (applied based on p5p patch as commit a4c70ab8da3ec1d87c83e5c617f4550814ec1724) Subject: 5.003_20, FreeBSD 3.0 and minor patch Date: Wed, 8 Jan 1997 14:37:47 +0100 From: Ollivier Robert <roberto@eurocontrol.fr> Files: Configure Msg-ID: <Mutt.19970108143747.roberto@caerdonn.eurocontrol.fr> (applied based on p5p patch as commit 50e0d465254be88fb90ac23584812a529741b4b1) CORE LANGUAGE CHANGES Subject: Fix overloading via inherited autoloaded functions Date: Mon, 13 Jan 1997 05:22:47 -0500 (EST) From: Ilya Zakharevich <ilya@math.ohio-state.edu> Files: gv.c lib/overload.pm pod/perldiag.pod t/pragma/overload.t Msg-ID: <199701131022.FAA22830@monk.mps.ohio-state.edu> (applied based on p5p patch as commit a9bc755754f0db5e848e65dfd2e63a96af50ffd4) Subject: Method call fixes: Don't cache in alias, don't skip undef From: Chip Salzenberg <chip@atlantic.net> Files: global.sym gv.c gv.h hv.c op.c pod/perlguts.pod pod/perltoc.pod pp.c pp_ctl.c pp_hot.c proto.h scope.c sv.c t/op/method.t Subject: Formats can be closures From: Chip Salzenberg <chip@atlantic.net> Files: cv.h op.c perly.c perly.c.diff perly.y pp_sys.c sv.h Subject: Quote 'foo' in C<$x{-foo}> From: Chip Salzenberg <chip@atlantic.net> Files: toke.c Subject: Forbid C< x->{y} > and C< x->[0] > under C<strict refs> From: Chip Salzenberg <chip@atlantic.net> Files: op.c pod/perldiag.pod t/pragma/strict-refs Subject: Allow <=> to return undef when operands are not ordered From: Chip Salzenberg <chip@perl.com> Files: MANIFEST pp.c t/op/cmp.t CORE PORTABILITY Subject: Re: Perl 5.003_20: OS/2 patches Date: Fri, 10 Jan 1997 06:02:16 -0500 (EST) From: Ilya Zakharevich <ilya@math.ohio-state.edu> Files: hints/os2.sh os2/Changes os2/os2.c os2/os2ish.h pp_sys.c Msg-ID: <199701101102.GAA19051@monk.mps.ohio-state.edu> (applied based on p5p patch as commit 9a3e71f668bd84b1cf53dd3ea10f588d59ecfebb) Subject: VMS patches for _20 Date: Tue, 14 Jan 1997 17:34:43 -0500 (EST) From: Charles Bailey <bailey@HMIVAX.HUMGEN.UPENN.EDU> Files: configpm dosish.h os2/os2ish.h plan9/plan9ish.h proto.h t/pragma/strict.t t/pragma/subs.t t/pragma/warning.t toke.c unixish.h vms/Makefile vms/config.vms vms/descrip.mms vms/genconfig.pl vms/perly_c.vms vms/test.com vms/vmsish.h x2p/a2p.h x2p/str.c private-msgid: <01IE7MGK7ULQ003K5M@hmivax.humgen.upenn.edu> Subject: Irix 6.3 & 6.4 and perl5.003_20 Date: Mon, 13 Jan 1997 17:42:50 -0500 (EST) From: John Stoffel <jfs@fluent.com> Files: MANIFEST hints/irix_6_3.sh hints/irix_6_4.sh Msg-ID: <199701132242.RAA14601@jfs.Fluent.COM> (applied based on p5p patch as commit 8a1e91d771b51ae31eed1ac5944c63934213fb07) Subject: Patch: MachTen hints, Configure Date: Tue, 14 Jan 1997 13:43:13 +0100 From: Dominic Dunlop <domo@slipper.ip.lu> Files: Configure hints/machten.sh private-msgid: <v03010d00af0123a93670@[194.51.248.75]> Subject: Rename aux.sh to aux_3.sh for MS-LOSS From: Chip Salzenberg <chip@atlantic.net> Files: MANIFEST hints/aux_3.sh DOCUMENTATION Subject: Full documentation generation patch Date: Wed, 15 Jan 97 11:16:28 +0100 From: Raphael Manfredi <Raphael_Manfredi@grenoble.hp.com> Files: MANIFEST pod/roffitall pod/rofftoc Msg-ID: <15309.853323388@lyon.grenoble.hp.com> (applied based on p5p patch as commit a3270a1d7469cab9221ab0050a0e6695bd0047d8) Subject: Document use of pos() and /\G/ Date: Mon, 13 Jan 1997 15:13:12 -0500 From: Gurusamy Sarathy <gsar@engin.umich.edu> Files: pod/perlfunc.pod pod/perlnews.pod pod/perlop.pod pod/perlre.pod pod/perltoc.pod pod/perltrap.pod Msg-ID: <199701132013.PAA26606@aatma.engin.umich.edu> (applied based on p5p patch as commit b2a07c1c241ec86f010fc0ea3bfa54c8ec28be90) Subject: Document new closure warnings From: Chip Salzenberg <chip@atlantic.net> Files: op.c pod/perldiag.pod Subject: Misc. doc patches missing in _20 Date: Tue, 07 Jan 1997 22:55:33 -0500 From: Roderick Schertler <roderick@gate.net> Files: pod/perlsub.pod pod/perltoc.pod pod/perlvar.pod Msg-ID: <102.852695733@eeyore.ibcinc.com> (applied based on p5p patch as commit b88f04ff2985d0899964b90ae56789d88f6b353e) LIBRARY AND EXTENSIONS Subject: Localize info about filesystems being case-forgiving From: Chip Salzenberg <chip@atlantic.net> Files: lib/File/Basename.pm pod/checkpods.PL pod/pod2html.PL pod/pod2latex.PL pod/pod2man.PL pod/pod2text.PL utils/c2ph.PL utils/h2ph.PL utils/h2xs.PL utils/perlbug.PL utils/perldoc.PL utils/pl2pm.PL utils/splain.PL x2p/find2perl.PL x2p/s2p.PL Subject: Eliminate warning from C<use overload> From: Chip Salzenberg <chip@atlantic.net> Files: lib/overload.pm OTHER CORE CHANGES Subject: Fix C< eval { my $x; eval '$x' } > From: Chip Salzenberg <chip@atlantic.net> Files: op.c t/op/misc.t Subject: Don't warn if eval '' uses outer func's lexicals From: Chip Salzenberg <chip@atlantic.net> Files: op.c Subject: Avoid memory wastage in wait(); make pidstatus global From: Chip Salzenberg <chip@atlantic.net> Files: global.sym interp.sym perl.c perl.h pp_sys.c Subject: Forbid ++ and -- on readonly values Date: Fri, 10 Jan 1997 19:47:16 -0800 (PST) From: "John Q. Linux" <jql@accessone.com> Files: pp.c pp_hot.c Msg-ID: <Pine.LNX.3.95.970110193330.11249D-100000@jql.accessone.com> (applied based on p5p patch as commit 74c80e585086695d5428ab316ca82fd6931aeabd) Subject: Keep array from dying during foreach(@array) From: Chip Salzenberg <chip@atlantic.net> Files: cop.h pp_ctl.c Subject: Fix C< $a="simple"; split /($a)/o > From: Chip Salzenberg <chip@atlantic.net> Files: pp.c t/op/misc.t Subject: Fix for anon-lists with tied entries coredump Date: Fri, 10 Jan 1997 02:45:11 -0500 From: Gurusamy Sarathy <gsar@engin.umich.edu> Files: pp.c Msg-ID: <199701100745.CAA13057@aatma.engin.umich.edu> (applied based on p5p patch as commit d976ac8220f8890bb7663152c4870f60e8e018c8) Subject: Don't set SVf_PADBUSY on immortal SVs From: Chip Salzenberg <chip@atlantic.net> Files: op.c Subject: Patch for Object subroutines Date: Tue, 7 Jan 1997 20:56:02 -0500 (EST) From: Ilya Zakharevich <ilya@math.ohio-state.edu> Files: cop.h Msg-ID: <199701080156.UAA15366@monk.mps.ohio-state.edu> (applied based on p5p patch as commit 174150afa5efdafc0e94a18211d3c9aa06b15cd9) Subject: Use an SVt_PVLV to hold stacked OP pointers when debugging From: Chip Salzenberg <chip@atlantic.net> Files: pp.c pp_hot.c Subject: Undo change that freed large pad vars From: Chip Salzenberg <chip@atlantic.net> Files: scope.c TESTS Subject: UNIVERSAL tests From: Roderick Schertler <roderick@gate.net> Files: MANIFEST t/op/universal.t Subject: Test deletion of array during foreach From: Jarkko Hietaniemi <jhi@alpha.hut.fi> Files: t/op/misc.t UTILITIES Subject: Don't search for pod if path is already valid Date: Wed, 08 Jan 1997 15:25:19 -0800 From: Wayne Scott <wscott@ichips.intel.com> Files: utils/perldoc.PL Msg-ID: <199701082325.PAA04521@pdxlx008.intel.com> (applied based on p5p patch as commit 88f0eda82bb679b4e6445ccb17e18d0781c6a5da) Subject: Yet another perldoc option Date: Thu, 3 Oct 1996 00:00:35 +0200 From: Gisle Aas <aas@aas.no> Files: utils/perldoc.PL Msg-ID: <199610022200.AAA15334@furubotn.sn.no> (applied based on p5p patch as commit a2333f3625faa17fb193cfa25c3d598cb59f105f) Subject: Re: perldoc, temp files, async pagers Date: 07 Jan 1997 22:54:14 -0500 From: Roderick Schertler <roderick@gate.net> Files: utils/perldoc.PL Msg-ID: <pzwwtoom8p.fsf@eeyore.ibcinc.com> (applied based on p5p patch as commit 7c36043de26da560a0f7eb04f36d232762c0092c)
Diffstat (limited to 'pp.c')
-rw-r--r--pp.c45
1 files changed, 30 insertions, 15 deletions
diff --git a/pp.c b/pp.c
index 7a24843f5d..f5c2225f91 100644
--- a/pp.c
+++ b/pp.c
@@ -544,13 +544,11 @@ PP(pp_undef)
break;
case SVt_PVCV:
cv_undef((CV*)sv);
- sub_generation++;
break;
case SVt_PVGV:
- if (SvFAKE(sv)) {
- sv_setsv(sv, &sv_undef);
- break;
- }
+ if (SvFAKE(sv))
+ sv_setsv(sv, &sv_undef);
+ break;
default:
if (SvPOK(sv) && SvLEN(sv)) {
(void)SvOOK_off(sv);
@@ -568,6 +566,8 @@ PP(pp_undef)
PP(pp_predec)
{
dSP;
+ if (SvREADONLY(TOPs))
+ croak(no_modify);
if (SvIOK(TOPs) && !SvNOK(TOPs) && !SvPOK(TOPs) &&
SvIVX(TOPs) != IV_MIN)
{
@@ -583,6 +583,8 @@ PP(pp_predec)
PP(pp_postinc)
{
dSP; dTARGET;
+ if (SvREADONLY(TOPs))
+ croak(no_modify);
sv_setsv(TARG, TOPs);
if (SvIOK(TOPs) && !SvNOK(TOPs) && !SvPOK(TOPs) &&
SvIVX(TOPs) != IV_MAX)
@@ -602,6 +604,8 @@ PP(pp_postinc)
PP(pp_postdec)
{
dSP; dTARGET;
+ if(SvREADONLY(TOPs))
+ croak(no_modify);
sv_setsv(TARG, TOPs);
if (SvIOK(TOPs) && !SvNOK(TOPs) && !SvPOK(TOPs) &&
SvIVX(TOPs) != IV_MIN)
@@ -851,12 +855,16 @@ PP(pp_ncmp)
dPOPTOPnnrl;
I32 value;
- if (left > right)
- value = 1;
- else if (left < right)
+ if (left < right)
value = -1;
- else
+ else if (left == right)
value = 0;
+ else if (left > right)
+ value = 1;
+ else {
+ SETs(&sv_undef);
+ RETURN;
+ }
SETi(value);
RETURN;
}
@@ -2110,10 +2118,11 @@ PP(pp_lslice)
PP(pp_anonlist)
{
- dSP; dMARK;
+ dSP; dMARK; dORIGMARK;
I32 items = SP - MARK;
- SP = MARK;
- XPUSHs((SV*)sv_2mortal((SV*)av_make(items, MARK+1)));
+ SV *av = sv_2mortal((SV*)av_make(items, MARK+1));
+ SP = ORIGMARK; /* av_make() might realloc stack_sp */
+ XPUSHs(av);
RETURN;
}
@@ -3696,7 +3705,8 @@ PP(pp_split)
STRLEN len;
register char *s = SvPV(sv, len);
char *strend = s + len;
- register PMOP *pm = (PMOP*)POPs;
+ register PMOP *pm;
+ register REGEXP *rx;
register SV *dstr;
register char *m;
I32 iters = 0;
@@ -3707,12 +3717,17 @@ PP(pp_split)
I32 realarray = 0;
I32 base;
AV *oldstack = curstack;
- register REGEXP *rx = pm->op_pmregexp;
I32 gimme = GIMME;
I32 oldsave = savestack_ix;
+#ifdef DEBUGGING
+ Copy(&LvTARGOFF(POPs), &pm, 1, PMOP*);
+#else
+ pm = (PMOP*)POPs;
+#endif
if (!pm || !s)
DIE("panic: do_split");
+ rx = pm->op_pmregexp;
TAINT_IF((pm->op_pmflags & PMf_LOCALE) &&
(pm->op_pmflags & (PMf_WHITE | PMf_SKIPWHITE)));
@@ -3792,7 +3807,7 @@ PP(pp_split)
s = m;
}
}
- else if (pm->op_pmshort) {
+ else if (pm->op_pmshort && !rx->nparens) {
i = SvCUR(pm->op_pmshort);
if (i == 1) {
i = *SvPVX(pm->op_pmshort);