summaryrefslogtreecommitdiff
path: root/sv.c
diff options
context:
space:
mode:
authorJarkko Hietaniemi <jhi@iki.fi>2003-02-13 14:55:54 +0000
committerJarkko Hietaniemi <jhi@iki.fi>2003-02-13 14:55:54 +0000
commitf8cf53708a096484c1f9a95d4ded967d084dcf53 (patch)
tree6ddc0ab003970b2ed91410beaa9b17381ec74250 /sv.c
parente33c26d0ac37721d57f9af17e5491b8ba50971fa (diff)
downloadperl-f8cf53708a096484c1f9a95d4ded967d084dcf53.tar.gz
Integrate:
[ 18674] Signedness nits. [ 18678] CPAN ChangeLog not needed, says Andreas. [ 18682] Subject: [PATCH] version objects final(?) patch From: John Peacock <jpeacock@rowman.com> Date: Sun, 05 Jan 2003 21:28:41 -0500 Message-ID: <3E18E9D9.2040908@rowman.com> [ 18683] Subject: RE: perldebug.pod suggestion From: "Jay Hannah" <jhannah@omnihotels.com> Date: Fri, 24 Jan 2003 11:28:44 -0600 Message-ID: <00b001c2c3ce$0c4716e0$4709a8c0@omarests2> [ 18684] fix for C< use if qw/ 1 open :utf8 / > based on: Subject: [perl #20536] use if 1, open => ':utf8' fails From: Autrijus Tang (via RT) <perlbug-followup@perl.org> Date: 24 Jan 2003 22:39:06 -0000 Message-Id: <rt-20536-49670.13.2464320257255@bugs6.perl.org> [ 18685] No, we don't really want the utility scripts. [ 18686] Compile under threads and MacOSX. For some reason newSVpvf was not exapnded. [ 18687] Subject: Re: [perl #20716] [FIX] scope error with brackets From: Enache Adrian <enache@rdslink.ro> Date: mon feb 10, 2003 18:48:58 Europe/Stockholm Message-id: <20030210174858.GA872@ratsnest.hole> [ 18688] Subject: Re: [perl #20777] [PATCH] goto &subroutine leaks memory From: Enache Adrian <enache@rdslink.ro> Date: sun feb 9, 2003 21:10:25 Europe/Stockholm Message-Id: <20030209201025.GA1247@ratsnest.hole> [ 18689] Fix for [perl #20339]: "%lf" rejected as invalid by recent sprintf. Now allows but ignores the 'l' modifier on floating point formats and adds a couple of tests. [ 18690] fix comment in change #18689 [ 18691] Subject: PATCH: sv_rvweaken() deficiency (against 5.8.0) From: Mark Mielke <mark@mark.mielke.cc> Date: Mon, 20 Jan 2003 19:56:13 -0500 Message-ID: <20030121005613.GA31739@mark.mielke.cc> [ 18692] Dueling patches. [ 18694] Subject: [PATCH] More B::Concise fixes From: Stephen McCamant <smcc@mit.edu> Date: Sun, 9 Feb 2003 17:28:38 -0500 Message-ID: <15942.54806.381678.173391@syllepsis.MIT.EDU> [ 18695] Subject: mini-[patch] perlrun "^$W" typo From: Iain Truskett <spoon@dellah.org> Date: Tue, 11 Feb 2003 08:38:52 +1100 Message-ID: <20030210213851.GC31721@ouroboros.anu.edu.au> [ 18696] Subject: [perl #20654] %*v02x considered invalid in printf From: Robin Barker (via RT) <perlbug-followup@perl.org> Date: 10 Feb 2003 16:43:23 -0000 Message-Id: <rt-20654-50711.19.9711009821137@bugs6.perl.org> [ 18698] Subject: perlbug (was: Re: [perl #20606] [no subject]) From: Slaven Rezic <slaven@rezic.de> Date: 30 Jan 2003 19:03:41 +0100 Message-ID: <87fzra7bwi.fsf@vran.herceg.de> [ 18697] Subject: [PATCH 5.9.0] to silence compiler warning From: Robin Barker <Robin.Barker@npl.co.uk> Date: Tue, 28 Jan 2003 13:27:17 -0000 Message-ID: <533D273D4014D411AB1D00062938C4D9040462CC@hotel.npl.co.uk> [ 18699] gcc 3.2.1 does not have -Wall faith that tmp will not be used uninitialized. (ignored some universal.c and util.c changes that were irrelevant for the maint branch code) p4raw-link: @18699 on //depot/perl: a55b55d8bdced7506ebb58e07395cd3123a8d718 p4raw-link: @18698 on //depot/perl: 8843dda615fc6b4c500632a976c7348c4ff93f1f p4raw-link: @18697 on //depot/perl: e3feee4e511b83331e79ac04619b8ea753bb64aa p4raw-link: @18696 on //depot/perl: f3583277f058a41c88989ac547f12b7065567d88 p4raw-link: @18695 on //depot/perl: b40da9968f92efbefe4f1cf588b91fedd3811c60 p4raw-link: @18694 on //depot/perl: 40b5b14f3b4cb7bd3fa8a9b351a18c2cc9240db0 p4raw-link: @18692 on //depot/perl: 0e1e4930e43c3ea5f965d2a7d26e0fd2ab77ccd7 p4raw-link: @18691 on //depot/perl: d91d49e893f41bf2ce59ca71dfaeeb27d6b2cfa0 p4raw-link: @18690 on //depot/perl: 8a2e3f14e33ebd36c920e88c0181ef8a85ec2cc8 p4raw-link: @18689 on //depot/perl: 00e17364bade89e3a71981168e34fb6160652b0a p4raw-link: @18688 on //depot/perl: 71fc2216c6a4911ddf91f3da00b2e64b1face896 p4raw-link: @18687 on //depot/perl: 437fd2104756c25dedf68c6e31cd29ecbf0e2569 p4raw-link: @18686 on //depot/perl: 9be22fdc5e6401d34a392a30fcc1c5fb0eb6723f p4raw-link: @18685 on //depot/perl: 2ed3a706e76b03c0f51930be7d3e2717325b819a p4raw-link: @18684 on //depot/perl: b97616431c42ffbbb12f97bf297caee34b9f27a9 p4raw-link: @18683 on //depot/perl: bea985324a3cd895f8e0a0c38e90ab3d09433415 p4raw-link: @18682 on //depot/perl: 129318bdc5341dc6c9c199fa27cbfe9b42b96328 p4raw-link: @18678 on //depot/perl: 871d6bc8d2bb39fd87ea17c4e1aea457a1daa443 p4raw-link: @18674 on //depot/perl: f3b9ce0f2eed4dfc9dec3df94bf1336eea7ecf86 p4raw-id: //depot/maint-5.8/perl@18700 p4raw-deleted: from //depot/perl@18673 'delete in' lib/CPAN/ChangeLog (@18672..) p4raw-integrated: from //depot/perl@18673 'copy in' ext/PerlIO/encoding/encoding.pm (@16272..) pod/perldebug.pod (@17592..) utils/perlbug.PL (@17603..) lib/if.pm (@17799..) lib/if.t (@17818..) t/comp/parser.t (@18251..) t/op/sprintf.t (@18689..) 'edit in' toke.c (@18687..) sv.c (@18693..) 'ignore' ext/MIME/Base64/Makefile.PL (@18642..) MANIFEST (@18685..) universal.c (@18686..) 'merge in' x2p/Makefile.SH (@13970..) doio.c (@18517..) pp_ctl.c (@18633..) pod/perlrun.pod (@18649..) ext/B/B/Concise.pm (@18657..)
Diffstat (limited to 'sv.c')
-rw-r--r--sv.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/sv.c b/sv.c
index 47c2b52385..77743d90e3 100644
--- a/sv.c
+++ b/sv.c
@@ -4801,7 +4801,19 @@ S_sv_add_backref(pTHX_ SV *tsv, SV *sv)
sv_magic(tsv, (SV*)av, PERL_MAGIC_backref, NULL, 0);
SvREFCNT_dec(av); /* for sv_magic */
}
- av_push(av,sv);
+ if (AvFILLp(av) >= AvMAX(av)) {
+ SV **svp = AvARRAY(av);
+ I32 i = AvFILLp(av);
+ while (i >= 0) {
+ if (svp[i] == &PL_sv_undef) {
+ svp[i] = sv; /* reuse the slot */
+ return;
+ }
+ i--;
+ }
+ av_extend(av, AvFILLp(av)+1);
+ }
+ AvARRAY(av)[++AvFILLp(av)] = sv; /* av_push() */
}
/* delete a back-reference to ourselves from the backref magic associated
@@ -8112,6 +8124,7 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV
\d+\$ explicit format parameter index
[-+ 0#]+ flags
v|\*(\d+\$)?v vector with optional (optionally specified) arg
+ 0 flag (as above): repeated to allow "v02"
\d+|\*(\d+\$)? width using optional (optionally specified) arg
\.(\d*|\*(\d+\$)?) precision using optional (optionally specified) arg
[hlqLV] size
@@ -8177,6 +8190,8 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV
}
if (!asterisk)
+ if( *q == '0' )
+ fill = *q++;
EXPECT_NUMBER(q, width);
if (vectorize) {
@@ -8604,6 +8619,9 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV
intsize = 'q';
#endif
break;
+/* [perl #20339] - we should accept and ignore %lf rather than die */
+ case 'l':
+ /* FALL THROUGH */
default:
#if defined(USE_LONG_DOUBLE)
intsize = args ? 0 : 'q';
@@ -8616,8 +8634,6 @@ Perl_sv_vcatpvfn(pTHX_ SV *sv, const char *pat, STRLEN patlen, va_list *args, SV
/* FALL THROUGH */
#endif
case 'h':
- /* FALL THROUGH */
- case 'l':
goto unknown;
}