Yves Orton [Fri, 3 Jun 2016 11:05:38 +0000]
check for signals when backtracking
backport of
8df928d230eba79fc0097ab1c525ea0aaf62fd01
Tony Cook [Wed, 27 Jan 2016 00:52:15 +0000]
remove duplicate environment variables from environ
If we see duplicate environment variables while iterating over
environ[]:
a) make sure we use the same value in %ENV that getenv() returns.
Previously on a duplicate, %ENV would have the last entry for the name
from environ[], but a typical getenv() would return the first entry.
Rather than assuming all getenv() implementations return the first entry
explicitly call getenv() to ensure they agree.
b) remove duplicate entries from environ
Previously if there was a duplicate definition for a name in environ[]
setting that name in %ENV could result in an unsafe value being passed
to a child process, so ensure environ[] has no duplicates.
CVE-2016-2381
fixup
Yves Orton [Thu, 21 Apr 2016 09:16:08 +0000]
backport fix for Perl #123562 to 5.14.2
Florian Ragwitz [Mon, 26 Sep 2011 10:04:56 +0000]
Add 5.14.2 to perlhist
Florian Ragwitz [Wed, 21 Sep 2011 11:21:17 +0000]
Delete some empty perldelta sections
Father Chrysostomos [Wed, 21 Sep 2011 05:22:58 +0000]
Fix pod syntax in perldelta
Karl Williamson [Sat, 16 Jul 2011 19:28:38 +0000]
perl5123delta: should have NAME perl5123delta
Florian Ragwitz [Mon, 19 Sep 2011 11:33:28 +0000]
Remove the RC1 marker
Florian Ragwitz [Mon, 19 Sep 2011 05:22:19 +0000]
Bump version to RC1
Florian Ragwitz [Mon, 19 Sep 2011 05:18:57 +0000]
Add 5.14.2-RC1 to perlhist
Florian Ragwitz [Mon, 19 Sep 2011 04:34:54 +0000]
Update Module::CoreList for 5.14.2
Florian Ragwitz [Mon, 19 Sep 2011 04:21:15 +0000]
Acknowledgements in perldelta
Karl Williamson [Sat, 30 Jul 2011 18:33:31 +0000]
/aa and \b fail under some utf8 strings
This was due to my failure to realize that this 'if' needed to
be updated when the /aa modifier was added.
Karl Williamson [Sat, 30 Jul 2011 18:08:47 +0000]
Panic with \b and /aa
This was due to my oversight in not fixing this switch statement
to accommodate /aa when it was added.
Florian Ragwitz [Thu, 8 Sep 2011 08:19:01 +0000]
Note that PERL_GLOBAL_STRUCT is broken
Nicholas Clark [Tue, 6 Sep 2011 13:06:06 +0000]
In Glob.xs, use memset() instead of bzero()
3c97495f56fb647c used bzero(), which isn't available on some platforms.
Florian Ragwitz [Wed, 7 Sep 2011 15:33:44 +0000]
Perldelta for the CPAN updates
Florian Ragwitz [Wed, 7 Sep 2011 15:33:09 +0000]
Bump CPAN{,::Distribution}::VERSION after MYMETA/configure_requires fixes
David Golden [Sat, 25 Jun 2011 01:13:40 +0000]
Changed read_meta to ignore dynamic_config
Because read_meta is also used to read META.* for configure_requires,
it must not return undef when dynamic_config is true. Instead,
the caller of read_meta must check dynamic_config when appropriate.
This is an API change, but as this is a new function, I think getting
correct semantics is more important than preserving back compatibility.
David Golden [Sat, 25 Jun 2011 00:52:33 +0000]
configure_requires should only check META
It should not check MYMETA if for some reason configure_requires
is checked again after MYMETA has been created.
This patch adds a regex filter to the check for the meta file.
Florian Ragwitz [Mon, 5 Sep 2011 11:43:50 +0000]
Perldelta for the CVE-2011-2939 fix
Florian Ragwitz [Mon, 5 Sep 2011 11:43:37 +0000]
Backport the CVE-2011-2939 fix for Encode
Florian Ragwitz [Mon, 5 Sep 2011 11:03:50 +0000]
Perldelta for the PerlIO::scalar COW fix
Father Chrysostomos [Sun, 5 Jun 2011 02:01:59 +0000]
Get PerlIO::scalar to write to COWs
Florian Ragwitz [Mon, 5 Sep 2011 11:02:37 +0000]
Fix a perldelta pod nit
Florian Ragwitz [Mon, 5 Sep 2011 10:38:27 +0000]
Perldelta for read-only glob copies
Father Chrysostomos [Tue, 12 Jul 2011 18:13:31 +0000]
Make it possible to have read-only glob copies
(aka Fun with Hash::Util)
This script gives ‘Modification of a read-only value’:
use Hash::Util lock_value;
*foo::; # autovivify
lock_value %::, foo::::;
*foo:: = [];
So far so good. That’s to be expected. But this one crashes:
use Hash::Util lock_value;
$a{h} = *foo;
lock_value %a, h;
$a{h} = [];
Under debugging builds, it gives assertion failures.
Anyone who knows how the flags work will see immediately what’s wrong,
but for the sake of those who don’t:
The SVf_FAKE flag is set on a copy of a typeglob, meaning that assign-
ing something other than a glob to it will overwrite the glob, instead
of writing to one of its slots.
The SVf_FAKE flag on a read-only (SVf_READONLY-flagged) string means
that it’s not actually read-only, but a copy-on-write string.
SVf_READONLY on a glob means that you can’t even assign *through* it.
See the first Hash::Util example above.
The crashing occurs when the two flags are combined.
sv_force_normal_flags assumes that anything marked fake AND read-only
is a copy-on-write string, so it proceeds to gut it, even if it’s
actually just corrupting a glob.
So this commit changes that check to take typeglobs into account.
Florian Ragwitz [Sun, 4 Sep 2011 23:50:58 +0000]
Fix a skip count in base's t/fields.t
Father Chrysostomos [Sat, 4 Jun 2011 18:58:14 +0000]
Allow restricted hashes containing COWs to be cleared
Florian Ragwitz [Sun, 4 Sep 2011 23:39:43 +0000]
Perldelta for deleting COWs in restricted hashes
Father Chrysostomos [Sat, 4 Jun 2011 18:54:10 +0000]
Allow COW values to be deleted from restricted hashes
I wonder how many other things a604c75 broke....
Florian Ragwitz [Sun, 4 Sep 2011 23:27:54 +0000]
Perldelta for the tied COW string localisation fix
Father Chrysostomos [Sat, 4 Jun 2011 20:10:41 +0000]
Stop localised ties from becoming ro when COW
Pau Amma [Sat, 4 Jun 2011 21:31:07 +0000]
move "garbage collection" glossary entry where it belongs
Father Chrysostomos [Sat, 4 Jun 2011 21:31:58 +0000]
Add Pau Amma to AUTHORS
Florian Ragwitz [Sun, 4 Sep 2011 23:16:37 +0000]
Perldelta entry for the utf8::decode COW fix
Father Chrysostomos [Mon, 30 May 2011 03:39:33 +0000]
2nd try: [perl #91834] utf8::decode does not respect copy-on-write
I reverted the first version of this patch because I put the if()
statement before a declaration. I did a revert, rather than a correc-
tion, to make back-porting easier.
Craig A. Berry [Sun, 4 Sep 2011 20:49:06 +0000]
perldelta entry for File:Glob / CVE-2011-2728 fix.
Craig A. Berry [Fri, 19 Aug 2011 15:14:13 +0000]
Plug segfault in bsd_glob() with unsupported ALTDIRFUNC flag.
First, disable all the unsupported flags just to make sure they aren't
triggering something they shouldn't be. Also, zero the pglob struct
before passing to bsd_glob(); it contains function pointers, and it's
safest if they are null rather than containing random stack data.
Bug reported by Clément Lecigne <
[email protected]>.
Florian Ragwitz [Fri, 26 Aug 2011 13:30:17 +0000]
Perldelta for the Carp memory leak fix
Father Chrysostomos [Thu, 18 Aug 2011 15:50:02 +0000]
[perl #97020] Carp (actually caller) leaking memory
Commit
eff7e72c3 (Detect incomplete caller overrides in Carp) used
this little trick for detecting a @DB::args that an overridden
caller() failed to set:
+ @args = \$i; # A sentinal, which no-one else has the address of
But there is a bug in caller(). The first time caller tries to write
to @DB::args, it calls Perl_init_dbargs first. That function checks
whether @DB::args is AvREAL, in case someone has assigned to it, and
takes appropriate measures. But caller doesn’t bother calling
Perl_init_dbargs more than once. So manually-assigned items in
@DB::args would leak, starting with the *second* call to caller.
Commit
eff7e72c3 triggered that bug, resulting in a regression in
Carp, in that it started leaking.
eff7e72c3 was backported to 5.12.2
with commit
97705941a4, so in both 5.12 and 5.14 Carp is affected.
This bug (the caller bug, not Carp’s triggering thereof) also affects
any caller overrides that set @DB::args themselves, if there are
alternate calls to the overridden caller and CORE::caller.
This commit fixes that by changing the if (!PL_dbargs) condition
in pp_caller to if (!PL_dbargs || AvREAL(PL_dbargs)). I.e., if
@args is either uninitialised or AvREAL then call Perl_init_dbargs.
Perl_init_dbargs also has a bug in it, that this fixes: The array not
only needs AvREAL turned off, but also AvREIFY turned on, so that
assignments to it that occur after its initialisation turn AvREAL back
on again. (In fact, Larry Wall added a comment suggesting this back
in perl 5.000.)
Ricardo Signes [Fri, 26 Aug 2011 11:55:54 +0000]
Florian Ragwitz [Fri, 26 Aug 2011 10:02:05 +0000]
Perldelta for the unpack "U*" fix
Father Chrysostomos [Wed, 18 May 2011 21:35:47 +0000]
[perl #90160] U* gives ‘U0 mode on an empty string’
This is a regression in 5.10 caused by change 23966/
08ca2aa38a29,
which added a bit of faulty logic. It was treating U* in the middle of
a pack template as equivalent to U0, if the input string was empty.
H.Merijn Brand [Thu, 4 Aug 2011 07:20:32 +0000]
Support gcc-4.x on HP-UX PA-RISC/64
Correct the socketsize. Probably due to big-endian versus
little-endian, this has always worked on Intel CPUs. This
is a very very old problem, and it has been the reason I
never used gcc-4 on PA-RISC, because perl would not pass
the test suite in 64bitall.
Noticeable effects of wrong "$socksizetype" are return codes
of 0 (pass) from functions like getpeername (), but invalid
(or none) data in the returned structures or a return length
of 0 or 256. In the latter case, the length is stored in the
second part of the 64bit long and the 32bit first part is 0.
This might be true on Intel-like machines too, but the tests
will pass, as the significant part of the returned length is
in the first 32bits and a pointer to int will still see that
correct. Mind that in that case the 32bits after that might
have been overridden => can of worms.
Florian Ragwitz [Fri, 26 Aug 2011 09:36:59 +0000]
Perldelta for the @INC filter fixes
Father Chrysostomos [Fri, 3 Jun 2011 21:20:10 +0000]
Follow-up to
d34a6664
As Nicholas Clark wrote in
nntp://nntp.perl.org/
20110603192458[email protected]:
> $ valgrind ./perl -Ilib 91880.pl
> ==5542== Memcheck, a memory error detector
...
> I think that the problem is that this code in S_run_user_filter()
>
> ENTER_with_name("call_filter_sub");
> SAVEGENERICSV(GvSV(PL_defgv));
> SAVETMPS;
> EXTEND(SP, 2);
>
>
> is putting an action on the save stack to write to an address within
> the GP of PL_defgv. However, the perl code run about 10 lines later
> frees up the GP of PL_defgv, so the scope stack now has a dangling
> pointer. 12 lines later at scope exit, the scope stack unwinding
> writes to the pointer, and nasal daemons emerge.
This commit precedes the SAVEGENERICSV with a call to save_gp, to make
sure the GP is not freed (and then a call to GvINTRO_off [set by
save_gp], so that subsequent glob assignments are not implicitly
localised).
This basically emulates what happens with ‘local *_ = \$some_scalar’,
but without the extra intermediate RV.
Father Chrysostomos [Mon, 30 May 2011 15:55:40 +0000]
[perl #91880] $_ refcounting problems in @INC filters
In @INC filters (subs returned by subs in @INC), $_ is localised to a
variable to which the next line of source code is to be assigned. The
function in pp_ctl.c that calls it (S_run_user_filter) has a pointer
to that variable.
Up till now, it was not setting the refcount or localising
$_ properly.
‘undef *_’ inside the sub would destroy the only refcount it
had, leaving a freed sv for toke.c to parse (which would crash,
of course).
In some cases, S_run_user_filter has to created a new variable. In
those cases, it was setting $_ to a mortal variable with the TEMP
flag, but with a refcount of 1, which would result in ‘Attempt to free
unreferenced scalar’ warnings if the $_ were freed by the subroutine.
This commit changes S_run_user_filter to use SAVEGENERICSV, rather
than SAVE_DEFSV, to localise $_, since the former lowers the refcount
on scope exit, while the latter does not. So now I have also made it
increase the refcount after assigning to the now-properly-localised $_
(DEFSV). I also turned off the TEMP flag, to avoid weird side effects
(which were what led me to this bug to begin with).
Florian Ragwitz [Fri, 26 Aug 2011 09:08:52 +0000]
Create a perldelta for 5.14.2
Florian Ragwitz [Fri, 26 Aug 2011 08:38:05 +0000]
Preliminary version bump for 5.14.2
Ricardo Signes [Wed, 6 Jul 2011 14:34:31 +0000]
disable use of nm on darwin
Testing from 10.5 with Xcode 3 to the latest OS X works with usenm='false' but
not always with usenm='true'
(cherry picked from commit
60a655a1ee05c577268377c1135ffabc34dbff43)
Jesse Vincent [Fri, 17 Jun 2011 00:10:26 +0000]
Remove the RC1 marker
Jesse Vincent [Thu, 9 Jun 2011 23:26:33 +0000]
A pod nit
Jesse Vincent [Thu, 9 Jun 2011 23:18:31 +0000]
typo fix
Jesse Vincent [Thu, 9 Jun 2011 22:10:08 +0000]
more perldelta nits
Jesse Vincent [Thu, 9 Jun 2011 22:01:26 +0000]
Removing XXX sections from perldelta
Jesse Vincent [Thu, 9 Jun 2011 21:57:45 +0000]
Fix pod syntax errors
Jesse Vincent [Thu, 9 Jun 2011 20:05:28 +0000]
Documented the most recent cherrypick.
Jesse Vincent [Thu, 9 Jun 2011 20:02:06 +0000]
cherry-pick a delta entry from blead
David Leadbeater [Sat, 14 May 2011 12:57:21 +0000]
scan_heredoc could reallocate PL_parser->linestr's PV
Since f0e67a1 it was possible the freed buffer may be read from when
parsing a heredoc. This adds a call to lex_grow_linestr to grow the
buffer and ensure the pointers in PL_parser are updated.
The bug is pretty hard to reproduce, hence no test. I'm able to
reproduce it with the following:
perl -Meverywhere=re,debug -MParams::Util -e1
Jesse Vincent [Thu, 9 Jun 2011 18:11:49 +0000]
snapshot perldelta work
Jesse Vincent [Thu, 9 Jun 2011 17:38:54 +0000]
Bump Module::CoreList for the 5.14.1 release.
I very intentionally gave it a "dev" version number because we're about
to deviate from what's in 5.12.4 and it should be as close to what's in
5.14.0 as possible. I'm not hugely thrilled about this, but it seems
like the most rational thing to do when we have multiple maint versions
in play.
Jesse Vincent [Wed, 8 Jun 2011 16:10:38 +0000]
Add a release date for 5.14.1 to perlhist.
Add a track marker for maint-5.14 to perlhist
Jesse Vincent [Wed, 8 Jun 2011 15:58:28 +0000]
Bump the Changes file to describe how to find the .0->.1 delta
Jesse Vincent [Wed, 8 Jun 2011 15:57:07 +0000]
Bump the RC marker in patchlevel.h to .1
Nobuhiro Iwamatsu [Sun, 5 Jun 2011 00:38:58 +0000]
Update lengthen time-out time for t/re/re.t.
When we carry out this test on SH4, it becomes the time-out.
2 seconds are set in watchdog, but are too short for SH4.
This patch was changed for 10 seconds.
$ time ./perl t/re/re.t
1..19
ok 1 - is_regexp(REGEXP ref)
ok 2 - is_regexp(REGEXP)
ok 3 - is_regexp("")
ok 4 - regexp_pattern[0] (ref)
ok 5 - regexp_pattern[1] (ref)
ok 6 - scalar regexp_pattern (ref)
ok 7 - regexp_pattern[0] (bare REGEXP)
ok 8 - regexp_pattern[1] (bare REGEXP)
ok 9 - scalar regexp_pattern (bare REGEXP)
ok 10 - !regexp_pattern("")
ok 11 - regnames
ok 12 - regnames
ok 13 - regnames in scalar context
ok 14 - regnames
ok 15
ok 16
ok 17
ok 18
ok 19 - Didn't loop
real 0m7.482s
user 0m3.848s
sys 0m0.036s
Bo Lindbergh [Fri, 13 May 2011 04:42:03 +0000]
waitpid doesn't work with WIFSTOPPED
> Quoth Emmanuel Rodriguez:
>> I'm see a strange behavior in the fonction WIFSTOPPED($?) when
>> waitpid($pid, WUNTRACED) is invoked and that the child process
>> receives a stop signal. Under this conditions one would expect that
>> WIFSTOPPED($?) would return a true value, but that's not what is
>> happening. A similar program written in C will have the same macro
>> return true instead of false under the same conditions.
>>
>> I can reproduce this with the default perl provided by Ubuntu 9.10 and
>> OS X 10.6. Which lets me guess that this is not a distro related bug.
>
> This is a documentation error. POSIX.pod incorrectly claims that
> you can pass the value of $? to WIFEXITED and its relatives.
> You must use the raw status value from ${^CHILD_ERROR_NATIVE} instead.
And here's the patch. Note that perlvar.pod gets it right already.
/Bo Lindbergh
Karl Williamson [Fri, 13 May 2011 16:25:16 +0000]
regcomp.c: \x{17f} can match /\xdf/i
Claudio Ramirez [Mon, 23 May 2011 15:33:58 +0000]
[perl #90850] Outdated Solaris pkg list on README.solaris
The required packages for building perl on Solaris are outdated.
The complete list is only appliable to Solaris 8 (released in
February 2000, end of support in March 2009). The patch updates
the requirements for Solaris 9 and 10 (in short: dropping
no longer existant packages).
Father Chrysostomos [Mon, 23 May 2011 15:33:48 +0000]
Add Claudio Ramirez to AUTHORS
Leo Lapworth [Sun, 3 Apr 2011 07:49:58 +0000]
Update AUTHORS file (add myself)
Leo Lapworth [Sun, 3 Apr 2011 08:20:04 +0000]
README.macosx - clarify requirement of apple developer tools
Leo Lapworth [Sun, 3 Apr 2011 08:06:56 +0000]
README.macosx - remove Carbon reference
Leo Lapworth [Sun, 3 Apr 2011 08:04:06 +0000]
README.macosx - cleanup/update copy, remove 'MacPerl'
Leo Lapworth [Sun, 3 Apr 2011 07:48:14 +0000]
Cleanup README.macosx
- Direct people for README.macosx straight away
- Make synopsis copy shorter and clearer
Karl Williamson [Sun, 8 May 2011 15:59:13 +0000]
/iaa doesn't work when the result is trie'd
It turns out that caseless tries currently only work on UTF-8 EXACTFU
nodes. The code attempted to test that by using UNI_SEMANTICS, but that
doesn't actually work; what is important is the semantics of the current
node.
Father Chrysostomos [Wed, 8 Jun 2011 03:20:06 +0000]
perldelta update
Tom Christiansen [Mon, 2 May 2011 13:25:55 +0000]
PATCH: perlop.pod
(cherry picked from commit
c543c01b43a4b95a6edf7898cea8c4662740151a)
Tom Christiansen [Sat, 21 May 2011 12:19:09 +0000]
General perlfunc edit; document ‘default’
(cherry picked from commit
8f1da26d544e0a10ac9cc91249e2e6e57e1847f6)
Zsbán Ambrus [Thu, 19 May 2011 05:03:43 +0000]
[perl #90592] Porting/epigraphs.pod: add 5.14.0(-RC*)
(cherry picked from commit
8b55b0284cb0f0f4e3a37ab37287c6441d6061d8)
Father Chrysostomos [Wed, 18 May 2011 23:17:38 +0000]
Add Nuno Cavalho’s other e-mail address
(cherry picked from commit
d5564dc44d9a4d84ce4fd1d6562abad29ef6a843)
smash [Mon, 16 May 2011 14:08:59 +0000]
add given when to perfunc
(cherry picked from commit
15a348aa1f233f84aedc3c0a7bcc9d29fc6dc9e9)
Tom Christiansen [Mon, 2 May 2011 13:28:11 +0000]
[perl #89660] PATCH to perlfunc.pod: three forgotten prototypes, unforgotten
(cherry picked from commit
dee33c9459543bbd59d00c5418b9b2183239205d)
Tom Christiansen [Mon, 2 May 2011 13:24:49 +0000]
perllol doc updates from tchrist.
(cherry picked from commit
21863e7e0890fa3f55e9efd85a0746d312e7dc53)
Tom Christiansen [Mon, 2 May 2011 13:23:11 +0000]
This patch is aagainst the "blead du moment". It fixes various
things, but does not address the "this version" != 5.14 and the
perlio issues. I believe that these at least should be addressed
as soon as possible (I don't know whether that means 5.14;
probably not). It has to either say the particular version that
applies. We can't keep releasing things that say this version:
they are not trustable.
--tom
(cherry picked from commit
f4750dabedb3961d2aa3fec0bc3a92de1ebc06b6)
Karl Williamson [Sun, 24 Apr 2011 15:33:59 +0000]
perlfunc: Refer to if.pm from "use"
(cherry picked from commit
530f0126691388f9891b28f639f47e4280836ccc)
Jesse Vincent [Tue, 10 May 2011 13:21:31 +0000]
Add Vladimir Timofeev to AUTHORS
(cherry picked from commit
e34fa53ab7895ffe22117b52fd641370cce2d688)
Vladimir Timofeev [Tue, 10 May 2011 13:17:41 +0000]
Fix for [perl #90106] 5.14.0-RC2 ODBM_File failures on Ubuntu natty [multiarch]
Ubuntu has juggled lib paths so we get to play games to catch up with
them.
(cherry picked from commit
3c998e07917e4a06d77c572595b246947120b316)
Jesse Vincent [Mon, 9 May 2011 02:46:24 +0000]
Update the version of Darwin we know the by_BE locale to be broken on
(cherry picked from commit
dfa5c78f5986779331a42eae9359203d25e23e80)
Jim Cromie [Wed, 1 Jun 2011 04:15:11 +0000]
regexp.h: work around -Werror compile failure of XS in linux perf tool
The linux perf tool has an XS component, but when built using system
perl 5.14.0, its compilation errors out on the switch statement in
regexp.h: get_regex_charset_name(), which lacks a default case. Add
one, copying the end-of-function return "?".
Preserve the end-of-function return "?", to avoid a hypothetical
compiler bug which misses the default case, and infers a void return
for a function thats declared otherwize.
Signed-off-by: Jim Cromie <[email protected]>
(cherry picked from commit
0984e55ea51a3030ba112fb0dd331061c5b0acf5)
Karl Williamson [Fri, 13 May 2011 14:35:23 +0000]
Assertion fails in multi-char regex match
In '"s\N{U+DF}" =~ /\x{00DF}/i, the LHS folds to 'sss', the RHS to 'ss'.
The bug occurs when the RHS tries to match the first two es's, but that
splits the LHS \xDF character, which Perl doesn't know how to handle,
and the assertion got triggered. (This is similar to [perl #72998].)
The solution adopted here is to disallow a partial character match,
as #72998 did as well.
Nicholas Clark [Fri, 27 May 2011 04:29:40 +0000]
regcomp.c: Fix memory leak regression
There was a remaining memory leak in the new inversion lists data
structure under threading. This solves it by changing the
implementation to use a SVpPV instead of doing our own memory
management. Then the already existing code for handling SVs
returns the memory when done.
Father Chrysostomos [Thu, 2 Jun 2011 18:37:06 +0000]
Fix link in perldelta
Karl Williamson [Sun, 22 May 2011 16:51:40 +0000]
regcomp.c: Another leak regression
Karl Williamson [Fri, 20 May 2011 16:54:22 +0000]
regcomp.c: Another memory leak regression
The reference count should be decremented upon freeing.
Karl Williamson [Thu, 19 May 2011 03:57:25 +0000]
regcomp.c: Fix regression memory leak
I carelessly added this memory leak which happens in a bracketed
character class under /i when there is both a above 255 code point
listed plus one of the several below 256 code points that participate
in a fold with ones above 256.
For 5.16, as the use of the inversion list data structure expands, an
automatic method of freeing space will need to be put in place. But
this should be sufficient for 5.14.1.
Father Chrysostomos [Wed, 1 Jun 2011 20:23:27 +0000]
perldelta update
In addition to documenting the recent integrations, I also
removed the ‘Selected’ from the ‘Selected Bug Fixes’ title,
as maint perldeltas should list *all* bug fixes.
Father Chrysostomos [Mon, 30 May 2011 21:53:11 +0000]
Revert the test from 2f77d7b
It doesn’t work on VMS.
Nicholas Clark [Tue, 26 Apr 2011 11:12:34 +0000]
Store the compiled format in mg_ptr instead of after SvCUR() - fixes RT #89218
Formats are compiled down to a sequence of U32 opcodes in doparseform().
Previously the block of opcodes was stored in the buffer of SvPVX() after
the raw string by extending the buffer, and calculating the first U32 aligned
address after SvCUR(). A flag bit on the scalar was set to signal this hackery,
tested with SvCOMPILED()
The flag bit used happened to be the same as one of the two used by to signal
Boyer-Moore compiled scalars. The assumption was that no scalar can be used for
both. Unfortunately, this isn't quite true.
Given that the scalar is alway upgraded to PVMG to add PERL_MAGIC_fm magic,
to clear the cached compiled version, there's no extra memory cost in using
mg_ptr in the MAGIC struct to point directly to the block of U32 opcodes. The
test for "is there a compiled version" can switch to mg_find(..., PERL_MAGIC_fm)
returning a pointer, and the use of a flag bit abolished.
Retain SvCOMPILED() and SvCOMPILED_{on,off}() as compatibility for XS code on
CPAN - the first is always 0, the other two now no-ops.
Nicholas Clark [Tue, 26 Apr 2011 10:02:45 +0000]
S_doparseform() should return void, not OP*, as it should use Perl_die not DIE
a1b950687051c32e added an error condition in S_doparseform() but used DIE(...)
to report it. DIE is defined as C<return Perl_die>, which acts as a hint to the
compiler about the control flow [as Perl_die() never returns], but also forces
the return type to be OP *. Whilst this is appropriate for pp functions, it's
not for S_doparseform() -
a1b950687051c32e had to change the return type to OP*
and return NULL, just to appease DIE(). Hence use Perl_die() instead, remove
return statements, and remove the didn't-return-NULL (dead) code from
pp_formline.