In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/61f055fdc1637ca101b78de847a04564ff6fd206?hp=ad275677c817a644a9045aaa3a48c604d073cf40>
- Log ----------------------------------------------------------------- commit 61f055fdc1637ca101b78de847a04564ff6fd206 Author: Father Chrysostomos <[email protected]> Date: Fri Apr 20 23:26:00 2012 -0700 perl5160delta: new xs bug fix section M Porting/perl5160delta.pod commit 39ae1ea7609fd70e23d08dcee695ec64e716af80 Author: Father Chrysostomos <[email protected]> Date: Fri Apr 20 23:22:14 2012 -0700 perl5160delta: new glob bug fix section M Porting/perl5160delta.pod commit 081d8988da1dc65cf6f95f8c5dca79fe306d8ca2 Author: Father Chrysostomos <[email protected]> Date: Fri Apr 20 23:20:37 2012 -0700 perl5160delta: more regexp bugs M Porting/perl5160delta.pod commit b7967cca7841850e908256bfa530a9c7c9af70cc Author: Father Chrysostomos <[email protected]> Date: Fri Apr 20 23:16:40 2012 -0700 perl5160delta: Move Hash::Util core fixes to hash section I was going to put it under COW, but itâs not COW-specific. Itâs not hash-specific, either, the fixes being in Internals::SvREADONLY, but Hash::Util is the only supported way to use that function. M Porting/perl5160delta.pod commit a771b28ff34b14834c994833bd5e520769c5396c Author: Father Chrysostomos <[email protected]> Date: Fri Apr 20 23:14:19 2012 -0700 perl5160delta: Donât mention study bug fixes Now that weâve made it a no-op, itâs not necessary to list the bug fixes it had. M Porting/perl5160delta.pod ----------------------------------------------------------------------- Summary of changes: Porting/perl5160delta.pod | 173 +++++++++++++++++++++++---------------------- 1 files changed, 89 insertions(+), 84 deletions(-) diff --git a/Porting/perl5160delta.pod b/Porting/perl5160delta.pod index 2941baa..bc11968 100644 --- a/Porting/perl5160delta.pod +++ b/Porting/perl5160delta.pod @@ -1986,6 +1986,21 @@ The trie optimisation used to have problems with alternations containing an empty C<(?:)>, causing C<< "x" =~ /\A(?>(?:(?:)A|B|C?x))\z/ >> not to match, whereas it should [perl #111842]. +=item * + +Use of lexical (C<my>) variables in code blocks embedded in regular +expressions will no longer result in memory corruption or crashes. + +Nevertheless, these code blocks are still experimental, as there are still +problems with the wrong variables being closed over (in loops for instance) +and with abnormal exiting (e.g., C<die>) causing memory corruption. + +=item * + +The C<\h>, C<\H>, C<\v> and C<\V> regular expression metacharacters used to +cause a panic error message when attempting to match at the end of the +string [perl #96354]. + =back =head2 Formats @@ -2284,6 +2299,14 @@ hash or array itself, a crash would ensue. This is no longer the case It used to be possible to free the typeglob of a localised array or hash (e.g., C<local @{"x"}; delete $::{x}>), resulting in a crash on scope exit. +=item * + +Some core bugs affecting L<Hash::Util> have been fixed: locking a hash +element that is a glob copy no longer causes subsequent assignment to it to +corrupt the glob, and unlocking a hash element that holds a copy-on-write +scalar no longer causes modifications to that scalar to modify other +scalars that were sharing the same string buffer. + =back =head2 Weak references @@ -2875,6 +2898,72 @@ result in memory corruption [perl #96126]. =back +=head2 Fixes to the C<glob> operator + +=over + +=item * + +On OSes other than VMS, Perl's C<glob> operator (and the C<< <...> >> form) +use L<File::Glob> underneath. L<File::Glob> splits the pattern into words, +before feeding each word to its C<bsd_glob> function. + +There were several inconsistencies in the way the split was done. Now +quotation marks (' and ") are always treated as shell-style word delimiters +(that allow whitespace as part of a word) and backslashes are always +preserved, unless they exist to escape quotation marks. Before, those +would only sometimes be the case, depending on whether the pattern +contained whitespace. Also, escaped whitespace at the end of the pattern +is no longer stripped [perl #40470]. + +=item * + +C<CORE::glob> now works as a way to call the default globbing function. It +used to respect overrides, despite the C<CORE::> prefix. + +=item * + +Under miniperl (used to configure modules when perl itself is built), +C<glob> now clears %ENV before calling csh, since the latter croaks on some +systems if it does not like the contents of the LS_COLORS enviroment +variable [perl #98662]. + +=back + +=head2 Fixes affecting the C API + +=over + +=item * + +The C<newHVhv> XS function now works on tied hashes, instead of crashing or +returning an empty hash. + +=item * + +The C<SvIsCOW> C macro now returns false for read-only copies of typeglobs, +such as those created by: + + $hash{elem} = *foo; + Hash::Util::lock_value %hash, 'elem'; + +It used to return true. + +=item * + +The C<SvPVutf8> C function no longer tries to modify its argument, +resulting in errors [perl #108994]. + +=item * + +C<SvPVutf8> now works properly with magical variables. + +=item * + +C<SvPVbyte> now works properly non-PVs. + +=back + =head2 Other notable fixes =over @@ -2896,13 +2985,6 @@ recommendations. See L<perlfunc/quotemeta> for details. =item * -C<newHVhv> and tied hashes - -The C<newHVhv> XS function now works on tied hashes, instead of crashing or -returning an empty hash. - -=item * - No warning for C<open(foo::bar)> When one writes C<open foo || die>, which used to work in Perl 4, a @@ -3050,25 +3132,6 @@ repeat counts [perl #94560]. =item * -On OSes other than VMS, Perl's C<glob> operator (and the C<< <...> >> form) -use L<File::Glob> underneath. L<File::Glob> splits the pattern into words, -before feeding each word to its C<bsd_glob> function. - -There were several inconsistencies in the way the split was done. Now -quotation marks (' and ") are always treated as shell-style word delimiters -(that allow whitespace as part of a word) and backslashes are always -preserved, unless they exist to escape quotation marks. Before, those -would only sometimes be the case, depending on whether the pattern -contained whitespace. Also, escaped whitespace at the end of the pattern -is no longer stripped [perl #40470]. - -=item * - -C<CORE::glob> now works as a way to call the default globbing function. It -used to respect overrides, despite the C<CORE::> prefix. - -=item * - The C-level C<pregcomp> function could become confused as to whether the pattern was in UTF8 if the pattern was an overloaded, tied, or otherwise magical scalar [perl #101940]. @@ -3155,11 +3218,6 @@ from when parsing a here document [perl #90128]. (5.14.1) =item * -The C<study> function could become confused if fed a string longer than -2**31 characters. Now that it's a no-op, it can't. - -=item * - C<each(I<ARRAY>)> is now wrapped in C<defined(...)>, like C<each(I<HASH>)>, inside a C<while> condition [perl #90888]. @@ -3211,14 +3269,6 @@ It used to return incorrect prototypes for some and die for others =item * -Some core bugs affecting L<Hash::Util> have been fixed: locking a hash -element that is a glob copy no longer causes subsequent assignment to it to -corrupt the glob, and unlocking a hash element that holds a copy-on-write -scalar no longer causes modifications to that scalar to modify other -scalars that were sharing the same string buffer. - -=item * - C<when> blocks are now capable of returning variables declared inside the enclosing C<given> block [perl #93548]. @@ -3236,25 +3286,6 @@ subsequently compiled code to become tainted [perl #64804]. =item * -Use of lexical (C<my>) variables in code blocks embedded in regular -expressions will no longer result in memory corruption or crashes. - -Nevertheless, these code blocks are still experimental, as there are still -problems with the wrong variables being closed over (in loops for instance) -and with abnormal exiting (e.g., C<die>) causing memory corruption. - -=item * - -The C<SvIsCOW> C macro now returns false for read-only copies of typeglobs, -such as those created by: - - $hash{elem} = *foo; - Hash::Util::lock_value %hash, 'elem'; - -It used to return true. - -=item * - Assignment to C<$^A> (the format output accumulator) now recalculates the number of lines output. @@ -3281,12 +3312,6 @@ working for the rest of the block.t =item * -The C<\h>, C<\H>, C<\v> and C<\V> regular expression metacharacters used to -cause a panic error message when attempting to match at the end of the -string [perl #96354]. - -=item * - For list assignments like C<($a,$b) = ($b,$a)>, Perl has to make a copy of the items on the right-hand side before assignment them to the left. For efficiency's sake, it assigns the values on the right straight to the items @@ -3387,13 +3412,6 @@ scalar to persist [perl #98480]. =item * -Under miniperl (used to configure modules when perl itself is built), -C<glob> now clears %ENV before calling csh, since the latter croaks on some -systems if it does not like the contents of the LS_COLORS enviroment -variable [perl #98662]. - -=item * - C<++> and C<--> now work on copies of globs, instead of dying. =item * @@ -3405,19 +3423,6 @@ worrying about warnings. =item * -The C<SvPVutf8> C function no longer tries to modify its argument, -resulting in errors [perl #108994]. - -=item * - -C<SvPVutf8> now works properly with magical variables. - -=item * - -C<SvPVbyte> now works properly non-PVs. - -=item * - C<< $$ >> is no longer tainted. Since this value comes directly from C<< getpid() >>, it is always safe. -- Perl5 Master Repository
