summaryrefslogtreecommitdiff
path: root/doop.c
Commit message (Collapse)AuthorAgeFilesLines
* [perl #44895] += warning on uninit magic varFather Chrysostomos2012-01-091-1/+1
| | | | | | | | | | | | | | The only uses of USE_LEFT in core now occur when SvGETMAGIC has already been called. So returning true for magical SVs is not neces- sary. In fact, it was never correct. Also, the code in do_vop (which handles bitwise operations on strings) to avoid an uninitialized warning had the same buggy SvGMAGICAL check. Now, the warning from $uninit += 1 is suppressed for all undefined vars, not just amagical ones. This causes 6 to-do tests in assignwarn.t to pass.
* Call FETCH once for $tied_ref =~ y/a/b/Father Chrysostomos2011-11-241-1/+1
|
* Trim dead code in do_kv.Eric Brine2011-08-241-14/+2
| | | | | | | | | | | | | | | | | | | | A small piece of code in do_kv has three bugs: - TARG could have been returned as an lvalue, so its refcount could be greater than 1, resulting in data getting clobbered. (See RT#20933 for previously fixed occurrence of this bug). - LvTARG is refcounted, so it's buggy to just NULL it. - TARG is returned without being initialised. The first two bugs disappeared recently when we stopped putting the lvalues in TARG for that op. The third remains. However, it seems that code is never called. It can only be called by putting NULL (not undef) on the Perl stack. I don't see how that's possible here. The test suite never reaches that code, so it seems it's just dead code.
* Clean: Actually use HvUSEDKEYS() instead of HvKEYS()Michael Witten2011-05-181-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This: commit 8aacddc1ea3837f8f1a911d90c644451fc7cfc86 Author: Nick Ing-Simmons <nik@tiuk.ti.com> Date: Tue Dec 18 15:55:22 2001 +0000 Tidied version of Jeffrey Friedl's <jfriedl@yahoo.com> restricted hashes - added delete of READONLY value inhibit & test for same - re-tabbed p4raw-id: //depot/perlio@13760 essentially deprecated HvKEYS() in favor of HvUSEDKEYS(); this is explained in line 144 (now 313) of file `hv.h': /* * HvKEYS gets the number of keys that actually exist(), and is provided * for backwards compatibility with old XS code. The core uses HvUSEDKEYS * (keys, excluding placeholdes) and HvTOTALKEYS (including placeholders) */ This commit simply puts that into practice, and is equivalent to running the following (at least with a35ef416833511da752c4b5b836b7a8915712aab checked out): git grep -l HvKEYS | sed /hv.h/d | xargs sed -i s/HvKEYS/HvUSEDKEYS/ Notice that HvKEYS is currently just an alias for HvUSEDKEYS: $ git show a35ef416833511da752c4b5b836b7a8915712aab:hv.h | sed -n 318p #define HvKEYS(hv) HvUSEDKEYS(hv) According to `make tests': All tests successful.
* [perl #82250] fix tainted (s)print formatDavid Mitchell2011-03-141-0/+8
| | | | | | | | | | | | commit 20ee07fbbcfa6be9f90bb8e5474a4d69d7396617 introduced dieing in (s)printf when the format is tainted; however it only worked when the format is part of an expression (because TAINT_PROPER checks for PL_tainted being set). Fix by doing TAINT_PROPER only after get magic has been done on the format SV (which will set PL_tainted). This is done by moving the checks in pp_sprintf and pp_prtf into do_sprintf() (which is called by the two pp functions).
* Move do_chomp() from pp.c to doop.c, and make it static.Nicholas Clark2010-12-271-167/+0
| | | | It was never part of the public API, and only ever used by pp_{s,}cho{,m}p.
* Merge Perl_do_chop() and Perl_do_chomp().Nicholas Clark2010-12-271-90/+45
| | | | | | They share code for dealing with PVAVs, PVHVs, read only values and handling PL_encoding. They are not part of the public API, and Google codesearch shows no users outside the core.
* Convert Perl_do_chomp() to the same prototype as Perl_do_chop().Nicholas Clark2010-12-271-15/+12
| | | | Pass in an SV to hold the count, rather than returning the count.
* Allow push/pop/keys/etc to act on referencesDavid Golden2010-10-311-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | All built-in functions that operate directly on array or hash containers now also accept hard references to arrays or hashes: |----------------------------+---------------------------| | Traditional syntax | Terse syntax | |----------------------------+---------------------------| | push @$arrayref, @stuff | push $arrayref, @stuff | | unshift @$arrayref, @stuff | unshift $arrayref, @stuff | | pop @$arrayref | pop $arrayref | | shift @$arrayref | shift $arrayref | | splice @$arrayref, 0, 2 | splice $arrayref, 0, 2 | | keys %$hashref | keys $hashref | | keys @$arrayref | keys $arrayref | | values %$hashref | values $hashref | | values @$arrayref | values $arrayref | | ($k,$v) = each %$hashref | ($k,$v) = each $hashref | | ($k,$v) = each @$arrayref | ($k,$v) = each $arrayref | |----------------------------+---------------------------| This allows these built-in functions to act on long dereferencing chains or on the return value of subroutines without needing to wrap them in C<@{}> or C<%{}>: push @{$obj->tags}, $new_tag; # old way push $obj->tags, $new_tag; # new way for ( keys %{$hoh->{genres}{artists}} ) {...} # old way for ( keys $hoh->{genres}{artists} ) {...} # new way For C<push>, C<unshift> and C<splice>, the reference will auto-vivify if it is not defined, just as if it were wrapped with C<@{}>. Calling C<keys> or C<values> directly on a reference gives a substantial performance improvement over explicit dereferencing. For C<keys>, C<values>, C<each>, when overloaded dereferencing is present, the overloaded dereference is used instead of dereferencing the underlying reftype. Warnings are issued about assumptions made in the following three ambiguous cases: (a) If both %{} and @{} overloading exists, %{} is used (b) If %{} overloading exists on a blessed arrayref, %{} is used (c) If @{} overloading exists on a blessed hashref, @{} is used
* [perl #76814] FETCH called twice - yFather Chrysostomos2010-09-241-6/+6
| | | | | This patch stops y from calling get-magic twice. (This has caused double magick since as far back as 5.6.2.)
* Fix untimely destruction introduced by lvalue ops [RT#67838] by returning a ↵Eric Brine2010-08-131-22/+16
| | | | TEMP instead of using TARG. Made appropriate TODO tests live.
* Add Perl_croak_no_modify() to implement Perl_croak("%s", PL_no_modify).Nicholas Clark2010-06-271-3/+3
| | | | | This reduces object code size, reducing CPU cache pressure on the non-exception paths.
* SvREFCNT_dec already checks if the SV is non-NULL (continued)Vincent Pit2009-11-081-2/+1
|
* SvREFCNT_dec already checks if the SV is non-NULLVincent Pit2009-11-051-2/+1
|
* Add Perl_ck_warner(), which combines Perl_ckwarn() and Perl_warner().Nicholas Clark2009-10-121-9/+6
| | | | | | | Replace ckWARN{,2,3,4}() && Perl_warner() with it, which trades reduced code size (about 0.2%), for 1 more function call if warnings are not enabled. However, if we're now in the L1 or L2 cache when we weren't previously, that's still going to be a speed win.
* Remove all #ifdef MACOS_TRADITIONAL code in core and non-dual-life XS code.Nicholas Clark2009-04-271-4/+0
| | | | | | | | (MacOS support was removed from MakeMaker in 6.22, and merged to blead on 15th December 2004 with 5dca256ec738057dc331fb644a93eca44ad5fa14. After this point MacOS wouldn't even have been able to build the perl binary, because it would not have been able to build DynaLoader. If anyone wishes to resurrect MacOS, start by reversing this commit and the relevant part of that commit.)
* Bump copyright year after previous changeRafael Garcia-Suarez2009-01-021-1/+1
|
* [perl #54956] crash on binary-or lvalue operation on qr//Ben Morrow2009-01-021-1/+7
| | | | | | | This fixes the following problem: -e 'my $re = qr/x/; $re |= "y"' assert failure under 5.10.0, 10-maint, bleed, but not 5.8.8
* PATCH: Large omnibus patch to clean up the JRRT quotesTom Christiansen2008-11-021-1/+3
| | | | | | Message-ID: <25940.1225611819@chthon> Date: Sun, 02 Nov 2008 01:43:39 -0600 p4raw-id: //depot/perl@34698
* Explicitly specify some printf formats for constant strings.Rafael Garcia-Suarez2008-11-021-3/+3
| | | | | | This is mostly to silence gcc's warning, "format not a string literal and no format arguments". p4raw-id: //depot/perl@34694
* Eliminate (SV *) casts from the rest of *.c, picking up one (further)Nicholas Clark2008-10-301-7/+7
| | | | | erroneous const in dump.c. p4raw-id: //depot/perl@34675
* Use pvs macros instead of pvn where possible.Marcus Holland-Moritz2008-10-291-4/+4
| | | p4raw-id: //depot/perl@34653
* Eliminate (AV *) casts in *.c.Nicholas Clark2008-10-291-2/+2
| | | p4raw-id: //depot/perl@34650
* Every remaining (HV *) cast in *.cNicholas Clark2008-10-281-6/+6
| | | p4raw-id: //depot/perl@34629
* Update copyright years.Nicholas Clark2008-10-251-2/+2
| | | p4raw-id: //depot/perl@34585
* Re: [PATCH] Double magic with chopVincent Pit2008-05-151-1/+1
| | | | | | From: "Vincent Pit" <perl@profvince.com> Message-ID: <32964.147.210.17.175.1210858279.squirrel@147.210.17.175> p4raw-id: //depot/perl@33831
* count-only transliteration needlessly makes copy-on-write Yitzchak Scott-Thoennes2008-03-101-2/+2
| | | | | | From: "Yitzchak Scott-Thoennes" <sthoenna@efn.org> Message-ID: <47935.71.32.86.11.1204678469.squirrel@webmail.efn.org> p4raw-id: //depot/perl@33457
* assert() that every NN argument is not NULL. Otherwise we have theNicholas Clark2008-02-121-6/+31
| | | | | | | | | | | | ability to create landmines that will explode under someone in the future when they upgrade their compiler to one with better optimisation. We've already done this at least twice. (Yes, some of the assertions are after code that would already have SEGVd because it already deferences a pointer, but they are put in to make it easier to automate checking that each and every case is covered.) Add a tool, checkARGS_ASSERT.pl, to check that every case is covered. p4raw-id: //depot/perl@33291
* Extend newSVpvn_flags() to also call sv_2mortal() if SVs_TEMP is set inNicholas Clark2008-01-031-2/+2
| | | | | | the flags. Move its implementation just ahead of sv_2mortal()'s for CPU cache locality. Refactor all code that can be to use this. p4raw-id: //depot/perl@32818
* Consting dump.cAndy Lester2007-05-251-1/+1
| | | | | Message-Id: <B46A083E-A133-4D38-9BE8-BE1EB0AAA326@petdance.com> p4raw-id: //depot/perl@31270
* make tr/// threadsafe by moving swash into padDave Mitchell2007-01-121-3/+18
| | | p4raw-id: //depot/perl@29765
* Update copyright years in .c filesRafael Garcia-Suarez2007-01-051-1/+1
| | | p4raw-id: //depot/perl@29696
* Re: [PATCH] Change implementation of %+ to use a proper tied hash interface ↵Yves Orton2007-01-041-2/+1
| | | | | | | and add support for %- Message-ID: <9b18b3110612291245q792fe91cu69422d2b81bb4f0b@mail.gmail.com> p4raw-id: //depot/perl@29682
* Re: [perl #41065] Out of memory!, while extending scalarMarcus Holland-Moritz2006-12-111-14/+23
| | | | | Message-ID: <20061210223232.0f3a5318@r2d2> p4raw-id: //depot/perl@29506
* Re: [PATCH] Initial attempt at named captures for perls regexp engineYves Orton2006-10-071-1/+4
| | | | | Message-ID: <9b18b3110610061016x5ddce965u30d9a821f632d450@mail.gmail.com> p4raw-id: //depot/perl@28957
* dump.c patchesAndy Lester2006-06-071-3/+3
| | | | | Message-ID: <20060606150137.GA4434@petdance.com> p4raw-id: //depot/perl@28363
* do_vop() couldn't correctly handle surprises from UTF-8 overloading.Nicholas Clark2006-04-301-6/+25
| | | p4raw-id: //depot/perl@28029
* Re: [PATCH] cleanup 212 warnings emitted by gcc-4.2Marcus Holland-Moritz2006-04-261-80/+80
| | | | | Message-ID: <20060424232038.7550f9b6@r2d2> p4raw-id: //depot/perl@27962
* doop.c consting, take 2Andy Lester2006-04-241-73/+64
| | | | | Message-ID: <20060424014509.GA29642@petdance.com> p4raw-id: //depot/perl@27943
* Replace some Copy() by Move() calls, because valgrind reportsRafael Garcia-Suarez2006-04-191-3/+3
| | | | | we can have overlapping memory areas here p4raw-id: //depot/perl@27897
* Coverity still thinks that there is a route through do_vop that canNicholas Clark2006-04-181-0/+5
| | | | | | leak resources. I believe that it's spotted that you can skip all the cases in the switch. Plug that hole. p4raw-id: //depot/perl@27883
* dooop.c: the strong asserts in Sv* macros could cause memory leakage -- move ↵Jarkko Hietaniemi2006-04-171-2/+2
| | | | | | | | the macro calls earlier (Coverity CID 84) Message-Id: <20060417071937.C13346CF2D@aprikoosi.hut.fi> Date: Mon, 17 Apr 2006 10:19:37 +0300 (EEST) p4raw-id: //depot/perl@27859
* Revert 27856.Nicholas Clark2006-04-171-14/+5
| | | p4raw-id: //depot/perl@27857
* The danger of piping an mbox to patch is that it contains more thanJarkko Hietaniemi2006-04-171-5/+14
| | | | | | | | | | | | | | | | one message. So both: Subject: [PATCH] doop.c: one more code path where memory could leak (Coverity) Message-Id: <20060416081925.680336CF2D@aprikoosi.hut.fi> Date: Sun, 16 Apr 2006 11:19:25 +0300 (EEST) and Subject: [PATCH] doop.c: one more code path where memory could leak (Coverity) From: jhi@cc.hut.fi (Jarkko Hietaniemi) Message-Id: <20060416081925.680336CF2D@aprikoosi.hut.fi> Date: Sun, 16 Apr 2006 11:19:25 +0300 (EEST) p4raw-id: //depot/perl@27856
* Perl_do_vop can profitably use Perl_sv_usepvn_flags, as it hasNicholas Clark2006-04-161-1/+1
| | | | | allocated space for an initialised a trailing NUL. p4raw-id: //depot/perl@27843
* doop.c: (Coverity) found a bug but not quite what Coverity thought it did ↵Jarkko Hietaniemi2006-04-141-7/+13
| | | | | | | (try valgrind on the new bop.t without the doop.c patch) Message-Id: <20060413162046.5F9636D08C@ugli.hut.fi> p4raw-id: //depot/perl@27801
* Re: [perl #38293] chr(65535) should be allowed in regexesSADAHIRO Tomoyuki2006-04-021-5/+7
| | | | | Message-Id: <20060402224657.B942.BQW10602@nifty.com> p4raw-id: //depot/perl@27688
* Speedups and shrinkages of SvREFCNT_incAndy Lester2006-02-271-1/+1
| | | | | Message-ID: <20060224205434.GA17867@petdance.com> p4raw-id: //depot/perl@27334
* More NullXXX macro removal from Andy LesterRafael Garcia-Suarez2006-02-201-1/+1
| | | p4raw-id: //depot/perl@27238
* Re: [PATCH] s/Null(gv|hv|sv)/NULL/gSteven Schubiger2006-02-031-3/+3
| | | | | | Message-ID: <20060203152449.GI12591@accognoscere.homeunix.org> Date: Fri, 3 Feb 2006 16:24:49 +0100 p4raw-id: //depot/perl@27065