This is a live mirror of the Perl 5 development currently hosted at
11 years agoPADTMP hash pessimisation was fixed with commit 38bb37b9aa18dbe6.
Nicholas Clark [Thu, 29 Mar 2012 16:07:31 +0000 (18:07 +0200)]
PADTMP hash pessimisation was fixed with commit 38bb37b9aa18dbe6.

Remove it from the TODO list.

11 years agoperldelta: Fix an internal POD link
Rafael Garcia-Suarez [Tue, 24 Apr 2012 07:41:31 +0000 (09:41 +0200)]
perldelta: Fix an internal POD link

11 years agoperldelta: reorder bugfix sections and tweak one or two
Ricardo Signes [Mon, 23 Apr 2012 22:56:29 +0000 (18:56 -0400)]
perldelta: reorder bugfix sections and tweak one or two

11 years agoperldelta: Encode::JP::Mobile is no longer busted
Ricardo Signes [Mon, 23 Apr 2012 22:36:53 +0000 (18:36 -0400)]
perldelta: Encode::JP::Mobile is no longer busted

11 years agoperldelta: add a missing "if" to clarify bugfix
Ricardo Signes [Mon, 23 Apr 2012 22:36:37 +0000 (18:36 -0400)]
perldelta: add a missing "if" to clarify bugfix

11 years agoperldelta: avoid unneeded history of bugfix
Ricardo Signes [Mon, 23 Apr 2012 22:36:09 +0000 (18:36 -0400)]
perldelta: avoid unneeded history of bugfix

11 years agoperldelta: wrap a few weirdly-wrapped lines
Ricardo Signes [Mon, 23 Apr 2012 22:35:55 +0000 (18:35 -0400)]
perldelta: wrap a few weirdly-wrapped lines

11 years agoperldelta: move regex variable fixes into regex section
Ricardo Signes [Mon, 23 Apr 2012 22:20:19 +0000 (18:20 -0400)]
perldelta: move regex variable fixes into regex section

This at least avoids having quit so much in the "misc."

Also, "Regular expressions and character classes" is redundant.
Drop the "and character classes"

11 years agoperldelta: add a missing > to a C<
Ricardo Signes [Mon, 23 Apr 2012 22:17:01 +0000 (18:17 -0400)]
perldelta: add a missing > to a C<

11 years agoperldelta: move a FETCH-too-many-times bugfix to that section
Ricardo Signes [Mon, 23 Apr 2012 22:16:48 +0000 (18:16 -0400)]
perldelta: move a FETCH-too-many-times bugfix to that section

11 years agoremove perldelta placeholders, add the 5.12-is-EOL notice
Ricardo Signes [Mon, 23 Apr 2012 22:09:44 +0000 (18:09 -0400)]
remove perldelta placeholders, add the 5.12-is-EOL notice

11 years agoPATCH: [perl #112530] Panic with inversion lists
Karl Williamson [Thu, 19 Apr 2012 16:27:29 +0000 (10:27 -0600)]
PATCH: [perl #112530] Panic with inversion lists

The code assumed that all property definitions would be well-formed,
meaning, in part, that they would be numerically sorted by code point,
with each range disjoint from all others.  So, the code was just
appending each range as it is found to the inversion list it is

This assumption is true for all definitions generated by mktables, but
it might not be true for user-defined ones.  The solution is merely to
change from calling the function that appends to instead call the
existing function that handles the more general case.

However, that function was not previously used outside the file it was
defined in, so must now be made public.  Also, this whole interface is
considered volatile, so the names of the public functions in it begin
with an underscore to further discourage XS writers from using them.
Therefore the more general add function is renamed to begin with an

And, the append function is no longer needed outside the file it is
defined in, so again to keep XS writers from using it, this commit makes
it static.

11 years agoperl5160delta: Remove mini bug fix headers
Father Chrysostomos [Sat, 21 Apr 2012 17:05:05 +0000 (10:05 -0700)]
perl5160delta: Remove mini bug fix headers

for consistency

11 years agoperl5160delta: More stuff
Father Chrysostomos [Sat, 21 Apr 2012 13:37:25 +0000 (06:37 -0700)]
perl5160delta: More stuff

I squashed three commits by mistake, and it wasn’t worth separ-
ating them:

1.  Revamp substr revamp

    Move the bugs to the bugs section.

    Nobody cares about the order of uninit warnings, so zap that.

2.  Fix pod syntax error

3.  New section for given bugs

11 years agoperl5160delta: New thread bug fix section
Father Chrysostomos [Sat, 21 Apr 2012 13:28:37 +0000 (06:28 -0700)]
perl5160delta: New thread bug fix section

11 years agoperl5160delta: New deref bug fix section
Father Chrysostomos [Sat, 21 Apr 2012 13:25:31 +0000 (06:25 -0700)]
perl5160delta: New deref bug fix section

11 years agoperl5160delta: Another format bug
Father Chrysostomos [Sat, 21 Apr 2012 13:21:14 +0000 (06:21 -0700)]
perl5160delta: Another format bug

11 years agoperl5160delta: Another regexp bug
Father Chrysostomos [Sat, 21 Apr 2012 13:20:17 +0000 (06:20 -0700)]
perl5160delta: Another regexp bug

It’s not specific to regexps, but it’s close enough.

11 years agoperl5160delta: Rmv #88138
Father Chrysostomos [Sat, 21 Apr 2012 13:18:43 +0000 (06:18 -0700)]
perl5160delta: Rmv #88138

This is more-or-less covered by the embedded nulls section.  I
can’t see how to get the bug number in there in a way that is not

11 years agoperl5160delta: Another XS bug
Father Chrysostomos [Sat, 21 Apr 2012 13:16:04 +0000 (06:16 -0700)]
perl5160delta: Another XS bug

11 years agoperl5160delta: Another XS bug
Father Chrysostomos [Sat, 21 Apr 2012 13:14:43 +0000 (06:14 -0700)]
perl5160delta: Another XS bug

11 years agoperl5160delta: Combine 2 similar return bugs
Father Chrysostomos [Sat, 21 Apr 2012 13:13:51 +0000 (06:13 -0700)]
perl5160delta: Combine 2 similar return bugs

11 years agoperl5160delta: Combine 2 similar $_ bugs
Father Chrysostomos [Sat, 21 Apr 2012 13:10:38 +0000 (06:10 -0700)]
perl5160delta: Combine 2 similar $_ bugs

11 years agoperl5160delta: new prototype bug fix section
Father Chrysostomos [Sat, 21 Apr 2012 13:05:17 +0000 (06:05 -0700)]
perl5160delta: new prototype bug fix section

11 years agoperl5160delta: new xs bug fix section
Father Chrysostomos [Sat, 21 Apr 2012 06:26:00 +0000 (23:26 -0700)]
perl5160delta: new xs bug fix section

11 years agoperl5160delta: new glob bug fix section
Father Chrysostomos [Sat, 21 Apr 2012 06:22:14 +0000 (23:22 -0700)]
perl5160delta: new glob bug fix section

11 years agoperl5160delta: more regexp bugs
Father Chrysostomos [Sat, 21 Apr 2012 06:20:37 +0000 (23:20 -0700)]
perl5160delta: more regexp bugs

11 years agoperl5160delta: Move Hash::Util core fixes to hash section
Father Chrysostomos [Sat, 21 Apr 2012 06:16:40 +0000 (23:16 -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.

11 years agoperl5160delta: Don’t mention study bug fixes
Father Chrysostomos [Sat, 21 Apr 2012 06:14:19 +0000 (23:14 -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.

11 years agoperl5160delta: New debugger bug fix section
Father Chrysostomos [Sat, 21 Apr 2012 06:09:25 +0000 (23:09 -0700)]
perl5160delta: New debugger bug fix section

11 years agoperl5160delta: New sort bug fix section
Father Chrysostomos [Sat, 21 Apr 2012 06:02:11 +0000 (23:02 -0700)]
perl5160delta: New sort bug fix section

11 years agoperl5160delta: New overloading bug fix section
Father Chrysostomos [Sat, 21 Apr 2012 05:57:32 +0000 (22:57 -0700)]
perl5160delta: New overloading bug fix section

11 years agoperl5160delta: Don’t mention Internals::SvREFCNT
Father Chrysostomos [Sat, 21 Apr 2012 05:55:34 +0000 (22:55 -0700)]
perl5160delta: Don’t mention Internals::SvREFCNT

It officially doesn’t exist. :-)

11 years agoperl5160delta: Rmv debugger local $_ thing
Father Chrysostomos [Sat, 21 Apr 2012 05:54:16 +0000 (22:54 -0700)]
perl5160delta: Rmv debugger local $_ thing

This entry is no longer relevant, now that local $_ is fixed.

11 years agoperl5160delta: New section for redef warnings
Father Chrysostomos [Sat, 21 Apr 2012 05:54:06 +0000 (22:54 -0700)]
perl5160delta: New section for redef warnings

11 years agoperl5160delta: Rmv null-named const bug
Father Chrysostomos [Sat, 21 Apr 2012 00:51:36 +0000 (17:51 -0700)]
perl5160delta: Rmv null-named const bug

This is covered by the section on embedded nulls.

This was only listed separately because it came later.

11 years agoperl5160delta: Move more re fixes to the re section
Father Chrysostomos [Sat, 21 Apr 2012 00:50:41 +0000 (17:50 -0700)]
perl5160delta: Move more re fixes to the re section

11 years agoperl5160delta: Separate section for PL_last_in_gv fixes
Father Chrysostomos [Sat, 21 Apr 2012 00:46:45 +0000 (17:46 -0700)]
perl5160delta: Separate section for PL_last_in_gv fixes

11 years agoperl5160delta: Move more COW stuff into the COW section
Father Chrysostomos [Sat, 21 Apr 2012 00:41:25 +0000 (17:41 -0700)]
perl5160delta: Move more COW stuff into the COW section

11 years agoperl5160delta: Make an uninit warning bug fix section
Father Chrysostomos [Fri, 20 Apr 2012 23:38:18 +0000 (16:38 -0700)]
perl5160delta: Make an uninit warning bug fix section

11 years ago[perl #112316] Make strict vars respect null-to-null assignment
Father Chrysostomos [Sat, 21 Apr 2012 05:50:11 +0000 (22:50 -0700)]
[perl #112316] Make strict vars respect null-to-null assignment

This is a follow-up to commits 6379d4a9a and 862504fb08.

As Karl Williamson (thank you!) pointed out, my changes were not suf-
ficient, because strEQ was still being used, which stops at the first
null, treating "foo\0bar" and "foo\0foo" as equivalent.

Under threads, strict vars was not respecting glob assignment from a
package with a null in its name to another also with a null in its
name, if the two package names shared a common prefix up to the null.

11 years ago[perl #111980] Don’t allow ‘my $♠’
Father Chrysostomos [Thu, 19 Apr 2012 23:32:08 +0000 (16:32 -0700)]
[perl #111980] Don’t allow ‘my $♠’

For consistency with ‘my $!’, ‘my $-’, etc., forbid lexical punctua-
tion variables made up of non-ASCII characters.  It was by mistake
that 204e6232679 allowed this.

11 years agoperl5160delta: Shrink tie bug fix section
Father Chrysostomos [Fri, 20 Apr 2012 21:44:04 +0000 (14:44 -0700)]
perl5160delta: Shrink tie bug fix section

The av_reify bug doesn’t need to be mentioned, as it only affects
debugging builds.

11 years agoperl5160delta: Move one more -l bug to the ft section
Father Chrysostomos [Fri, 20 Apr 2012 21:32:03 +0000 (14:32 -0700)]
perl5160delta: Move one more -l bug to the ft section

11 years agoperl5160delta: New secton for tie bugs
Father Chrysostomos [Fri, 20 Apr 2012 21:30:48 +0000 (14:30 -0700)]
perl5160delta: New secton for tie bugs

11 years agoperl5160delta: Section for vstring & ver obj fixes
Father Chrysostomos [Fri, 20 Apr 2012 21:20:45 +0000 (14:20 -0700)]
perl5160delta: Section for vstring & ver obj fixes

11 years agoperl5160delta: Misc tweaks
Father Chrysostomos [Fri, 20 Apr 2012 21:11:42 +0000 (14:11 -0700)]
perl5160delta: Misc tweaks

11 years agoperl5160delta: Finish rewriting stat/filetest section
Father Chrysostomos [Fri, 20 Apr 2012 21:01:02 +0000 (14:01 -0700)]
perl5160delta: Finish rewriting stat/filetest section

11 years agoadd a missing C<...> to perldelta
Ricardo Signes [Fri, 20 Apr 2012 17:40:31 +0000 (13:40 -0400)]
add a missing C<...> to perldelta

thanks for the report, James Aitken!

11 years agoseveral perl5160delta.pod tweaks or fixes
Ricardo Signes [Fri, 20 Apr 2012 16:52:52 +0000 (12:52 -0400)]
several perl5160delta.pod tweaks or fixes

Thanks to Marcel Grünauer and Pedro Melo for pointing out
some of these errors.

11 years agoperl5160delta: A hint bug I missed
Father Chrysostomos [Fri, 20 Apr 2012 06:23:35 +0000 (23:23 -0700)]
perl5160delta: A hint bug I missed

11 years agoperl5160delta: Partially rewrite stat/filetest section
Father Chrysostomos [Fri, 20 Apr 2012 06:18:23 +0000 (23:18 -0700)]
perl5160delta: Partially rewrite stat/filetest section

11 years agoperl5160delta: Create a stat/filetest section
Father Chrysostomos [Fri, 20 Apr 2012 06:14:24 +0000 (23:14 -0700)]
perl5160delta: Create a stat/filetest section

11 years agoperl5160delta: Shrink embedded null section
Father Chrysostomos [Fri, 20 Apr 2012 06:05:00 +0000 (23:05 -0700)]
perl5160delta: Shrink embedded null section

Some of these items repeat each other.

11 years agoperl5160delta: Change capitalisation
Father Chrysostomos [Fri, 20 Apr 2012 06:03:40 +0000 (23:03 -0700)]
perl5160delta: Change capitalisation

to match the surrounding sections

11 years agoperl5160delta: Create a weakref section
Father Chrysostomos [Fri, 20 Apr 2012 06:02:27 +0000 (23:02 -0700)]
perl5160delta: Create a weakref section

11 years agoperl5160delta: Rearrange and reword aggreg bugs
Father Chrysostomos [Fri, 20 Apr 2012 06:00:36 +0000 (23:00 -0700)]
perl5160delta: Rearrange and reword aggreg bugs

11 years agoperl5160delta: Put hash and array bug fixes together
Father Chrysostomos [Fri, 20 Apr 2012 05:57:58 +0000 (22:57 -0700)]
perl5160delta: Put hash and array bug fixes together

Some entries apply to both types of aggregates, so making a single
section for both is the path of least resistance.

11 years agoperl5160delta: New section for hint bug fixes
Father Chrysostomos [Fri, 20 Apr 2012 05:49:53 +0000 (22:49 -0700)]
perl5160delta: New section for hint bug fixes

11 years agoperl5160delta: Tweaks to lv sub bug fixes
Father Chrysostomos [Fri, 20 Apr 2012 05:33:39 +0000 (22:33 -0700)]
perl5160delta: Tweaks to lv sub bug fixes

Rearrange things so similar items are closer.  Shorten some descriptions.

11 years agoperl5160delta.pod: Move 2 similar entries closer
Father Chrysostomos [Fri, 20 Apr 2012 05:18:28 +0000 (22:18 -0700)]
perl5160delta.pod: Move 2 similar entries closer

11 years ago[perl #107636] Make Carp::longmess work inside die override
Father Chrysostomos [Thu, 12 Apr 2012 13:38:59 +0000 (06:38 -0700)]
[perl #107636] Make Carp::longmess work inside die override

When PL_last_in_gv (and hence $.) is set, Carp::longmess uses
eval { die } to find out what handle and line number perl will append
to the error message.

It was not qualifying the die with CORE::, so a CORE::GLOBAL::die
override that itself calls Carp::longmess would result in infinite
recursion if that override were installed before Carp loaded.

This broke Class::Scaffold’s tests, which began to hang.

11 years agoIncrease $Carp::Heavy::VERSION to 1.26
Father Chrysostomos [Thu, 12 Apr 2012 21:50:47 +0000 (14:50 -0700)]
Increase $Carp::Heavy::VERSION to 1.26

11 years agoIncrease $Carp::VERSION to 1.26
Father Chrysostomos [Thu, 12 Apr 2012 13:39:50 +0000 (06:39 -0700)]
Increase $Carp::VERSION to 1.26

11 years agoMake strict vars respect ‘package ĵ; *ĵ::bar = [];’
Father Chrysostomos [Mon, 9 Apr 2012 06:04:38 +0000 (23:04 -0700)]
Make strict vars respect ‘package ĵ; *ĵ::bar = [];’

In this particular case, the name of the current package in UTF-8 (it
cannot be expressed in Latin-1) is the same byte sequence as the name
of the package being assigned to in Latin-1.

Some of the logic in stashpv_hvname_match was faulty.  It worked for
a Latin-1 current package assigning to a glob in a UTF-8 package, but
not the other way around.

11 years ago[perl #112316] Make strict vars respect assignment from null pkg
Father Chrysostomos [Mon, 9 Apr 2012 03:25:52 +0000 (20:25 -0700)]
[perl #112316] Make strict vars respect assignment from null pkg

Under threads, strict vars was not respecting glob assignment from a
package with a null in its name if the name of the package assigned to
was equal to the prefix of the current package up to the null.

11 years ago[perl #112316] Make strict vars respect assignment to null pkg
Father Chrysostomos [Sun, 8 Apr 2012 21:51:57 +0000 (14:51 -0700)]
[perl #112316] Make strict vars respect assignment to null pkg

Under threads, strict vars was not respecting assignment to a package
with a null in its name if the name of the package assigned from was
equal to the prefix of the destination package up to the null.

11 years agoSet *.pod permissions in installperl.
Craig A. Berry [Thu, 12 Apr 2012 21:27:08 +0000 (16:27 -0500)]
Set *.pod permissions in installperl.

installperl takes responsibility for explicitly setting the
permissions on most of the files it installs, but had not been
doing so on pods for some reason.  This commit makes it do so.

Not having world/other read access could not only defeat attempts
to read documentation, but also cause C<use diagnostics;> to fail
when it attempted to open perldiag.pod.

11 years agoSet *.html permissions in installhtml.
Craig A. Berry [Fri, 13 Apr 2012 17:42:10 +0000 (12:42 -0500)]
Set *.html permissions in installhtml.

Pod::Html::pod2html via the installhtml utility, which is invoked
by the install.html make target, had not been explicitly setting
permissions on the installed HTML files.  Leaving the target
permissions to chance meant that on some systems they were set
appropriately and some not based on various site and platform

"Appropriately" in this case means readable by world/other, so we
now set that explicitly.

11 years agoallow "." in directory name
Ricardo Signes [Fri, 20 Apr 2012 02:25:34 +0000 (22:25 -0400)]
allow "." in directory name

This qualifies as another of the "crude hack to keep Pod-Html
more usable" hacks that are in place until the path handling
is fixed more systematically.

11 years agoperl5160delta: YAML 0.81 works with blead
Father Chrysostomos [Thu, 19 Apr 2012 21:07:12 +0000 (14:07 -0700)]
perl5160delta: YAML 0.81 works with blead

11 years agoperl5160delta: Remove op/sigdispatch.t
Father Chrysostomos [Thu, 19 Apr 2012 05:44:04 +0000 (22:44 -0700)]
perl5160delta: Remove op/sigdispatch.t

Commit 8aed2c65ce skips the tests on stable versions.

11 years agoperl5160delta: List significant CPAN failures
Father Chrysostomos [Thu, 19 Apr 2012 05:42:01 +0000 (22:42 -0700)]
perl5160delta: List significant CPAN failures

By significant, I mean distributions that have at least 5 non-Acme
non-Task non-Bundle dependents.

11 years agoremove assert and change message
Yves Orton [Mon, 16 Apr 2012 19:41:43 +0000 (21:41 +0200)]
remove assert and change message

11 years agovalid_utf8_to_uv{chr,uni} have no documentation, so remove the 'd' flag.
Nicholas Clark [Thu, 12 Apr 2012 16:27:59 +0000 (18:27 +0200)]
valid_utf8_to_uv{chr,uni} have no documentation, so remove the 'd' flag.

Commit 27d6c58a7e12243b added valid_utf8_to_uv{chr,uni} with the commit

    utf8.c: Add valid_utf8_to_uvuni() and valid_utf8_to_uvchr()

    These functions are like utf8_to_uvuni() and utf8_to_uvchr(), but their
    name implies that the input UTF-8 has been validated.

    They are not currently documented, as it's best for XS writers to call
    the functions that do validation.

However, it also inadvertently gave each a 'd' flag in embed.fnc, incorrectly
stating that they had documentation, which causes to warn that it
can't find the documentation.

So remove the 'd' flag to correctly reflect the intended lack of documentation.

11 years agoFix version tests on windoze
Father Chrysostomos [Wed, 18 Apr 2012 00:16:12 +0000 (17:16 -0700)]
Fix version tests on windoze

This is a follow-up to commit 78e230aef16b.

When there is an integer overflow (which itself produces a warning),
the resulting behaviour with version objects is basically undefined.
Hence, this newly-added test, which was actually just there to make
sure there was no panic, failed.

11 years agoDon’t produce uninit warning for ->VERSION(9e99)
Father Chrysostomos [Wed, 18 Apr 2012 00:14:14 +0000 (17:14 -0700)]
Don’t produce uninit warning for ->VERSION(9e99)

This is a follow-up to commit 78e230aef16b.

It was using a temporary undef scalar and concatenating to it instead
of setting it, triggering the warning.

I haven’t added tests, out of paranoia.

11 years agoPATCH: [perl #111338] Warnings in utf8 subcategories do nothing in isolation
Karl Williamson [Mon, 5 Mar 2012 17:34:05 +0000 (10:34 -0700)]
PATCH: [perl #111338] Warnings in utf8 subcategories do nothing in isolation

This was the result of assuming that these would not be on unless
the main category was also on.

11 years agoCorrect INSTALL to warn about editing cflags, not cflags.SH
Nicholas Clark [Wed, 28 Mar 2012 14:57:13 +0000 (16:57 +0200)]
Correct INSTALL to warn about editing cflags, not cflags.SH

Commit 668cbedd4fc8e9b2 in Nov 2011, as part of a much larger set of edits
and corrections, inadvertently changed 'cflags' to 'cflags.SH', which is
not correct in context.

11 years ago[perl #112478] Avoid buffer overflow in upg_version
Father Chrysostomos [Tue, 17 Apr 2012 03:24:45 +0000 (20:24 -0700)]
[perl #112478] Avoid buffer overflow in upg_version

On most systems, this is actually a panic, rather than an overflow,
because the overflow is detected before it can happen.

upg_version needs to use the equivalent of sprintf "%.9f" on a numeric
input before parsing it.  For speed’s sake, I assume, it was done
using my_snprintf, with a C auto for the buffer, declared with a fixed
size of 64.

There is no guarantee that the number passed in will not overflow that
buffer, so upg_version should use an SV and sv_catpvf in those cases
where it would overflow.

11 years agoINSTALL doc changes because of movement
Slaven Rezic [Wed, 21 Mar 2012 19:59:46 +0000 (20:59 +0100)]
INSTALL doc changes because of movement

commit 30b6e59101b252c20a6b50b95203d1e2c6016604 moved from
t to top level.

11 years agoSITELIB_EXP may be NULL on Windows
Jan Dubois [Wed, 4 Apr 2012 00:15:59 +0000 (17:15 -0700)]
SITELIB_EXP may be NULL on Windows

The sitelib directory is located dynamically at runtime by checking
for the ../site path relative to the location of perl5xx.dll.  This
directory doesn't exist at buildtime, so calling strlen(NULL) may
cause an access violation...

11 years ago[perl #112444] Don’t leak %^H autovivified by destructor
Father Chrysostomos [Mon, 16 Apr 2012 05:01:26 +0000 (22:01 -0700)]
[perl #112444] Don’t leak %^H autovivified by destructor

More precisely, don’t let a hint hash autovivified by a destructor
during scope exit leak to outer scopes.

GvHV(PL_hintgv) (aka *^H{HASH}) must be set to null before the hash in
it is freed on scope exit.  Otherwise destructors will see %^H with a
refcount of zero, and might try to iterate over a hash that is in the
process of being freed.  Bad things then happen.  Commit 2653c1e3b1
took care of this.

Now, if GvHV(PL_hintgv) is null when destructors are called, those
destructors might end up autovivifying it.  The code in scope.c that
handles hints when a scope is left (SAVEt_HINTS in Perl_leave_scope)
would then end up leaving that new autovivified %^H in place when the
scope exited, if the outer scope did not have HINT_LOCALIZE_HH set
(meaning %^H was unused).

That in itself would not be so much of a problem, if it were not for
the fact that %^H is magicalised by the scope-handling code, not when
it is autovivified (see also bug #112458).  Hence, subsequent changes
to %^H would not magically set the HINT_LOCALIZE_HH hint bit, which
bit is checked all over the place to see whether %^H is in use.  This,
in turn, would cause hints subsequently added to %^H to leak to
outer scopes.

This commit fixes that by repeatedly freeing GvHV(PL_hintgv).  If a
destructor autovivifies it again, it just causes another iteration of
the while loop.  This does mean a destructor could autovivify %^H and
cause the new %^H itself to trigger a destructor, resulting in infi-
nite loops.  But then that is that own code’s fault.

This originally came up because commit 2653c1e3b1 also caused des-
tructors that try to add new free magic to %^H to add it to a new
autovivified %^H instead of the existing %^H that was being freed.
This caused the nextgen module to fail its tests, because it uses
B::Hooks::EndOfScope to register a sub to be called on scope exit, and
it does this from a destructor itself called during scope exit.  If
the autovivified %^H leaks to an outer scope, the second destructor is
not called.

11 years agomake Pod-Html's _unixify normalize Win32 drive letters
Ricardo Signes [Mon, 16 Apr 2012 01:31:08 +0000 (21:31 -0400)]
make Pod-Html's _unixify normalize Win32 drive letters

Okay, look, this is kind of stupid and horrible, but it should
stop smoke failures and actually address some forms of failed path
comparisons in Pod::Html.  In reality, we should be doing better path
comparisons than checking substr and eq, but that's not going to get
properly overhauled at this late date.

In the meantime, this should fix Win32 smokers with forcibly lc()-ed
cwds without breaking anybodye else, right?  Right!

11 years agofix [perl #112370] memEQ off-by-one in Perl_regexec_flags()
Yves Orton [Sun, 15 Apr 2012 09:23:11 +0000 (11:23 +0200)]
fix [perl #112370] memEQ off-by-one in Perl_regexec_flags()

The problem was that when we had a floating non-unicode substr
we could read past the beginning of the string.

So for instance this code:

    foreach ("\x{2603}", 'a') {
        'b' =~ /(?:^|.)$_$/;

When run under valgrind would show an illegal read.

If run under use re 'debug' we would see output like this:

    floating utf8 "a"$ at 0..1 (checking floating) minlen 1
    Matching REx "(?:^|.)a$" against "b"
    UTF-8 pattern...
    Can't trim the tail, match fails (should not happen)
    Match failed

Which suggests we are falling into a "should not happen" branch of the

This patch fixes the logic to properly test string length issues, and
changes the debug output so it looks like this:

    floating utf8 "a"$ at 0..1 (checking floating) minlen 1
    Matching REx "(?:^|.)a$" against "b"
    UTF-8 pattern...
    String does not contain required trailing substring, cannot match.
    Match failed

Which makes more sense.

11 years agoAdd an assert related to [perl #112370] memEQ off-by-one in Perl_regexec_flags()
Yves Orton [Sun, 15 Apr 2012 09:22:29 +0000 (11:22 +0200)]
Add an assert related to [perl #112370] memEQ off-by-one in Perl_regexec_flags()

This probably breaks tests under DEBUGGING, but it should also make this
codepath more robust to future changes. It seems to pass all tests.

Follow up patch fixes one cause of this assert being utilized.

11 years agoop/sigdispatch.t: skip tests on prodn releases
David Mitchell [Sat, 14 Apr 2012 09:28:35 +0000 (10:28 +0100)]
op/sigdispatch.t: skip tests on prodn releases

RT #89718 showed a couple of tests hanging on old linux kernels.
Until such time as someone can reliably probe for this, just
completely skip those tests on production releases.

11 years ago[perl #110736] warnings from cpan/IO-Compress/t/cz-03zlib-v1.t
Chris 'BinGOs' Williams [Fri, 23 Mar 2012 17:07:24 +0000 (17:07 +0000)]
[perl #110736] warnings from cpan/IO-Compress/t/cz-03zlib-v1.t

Backported t/cz-03zlib-v1.t from IO-Compress-2.049

11 years agoTweak the FEATURE_IS_ENABLED() macro to avoid a bug in the HP-UX compiler.
Nicholas Clark [Wed, 11 Apr 2012 14:47:27 +0000 (16:47 +0200)]
Tweak the FEATURE_IS_ENABLED() macro to avoid a bug in the HP-UX compiler.

11 years agostop %^H pointing to being-freed hash; #112326
David Mitchell [Wed, 11 Apr 2012 12:37:09 +0000 (13:37 +0100)]
stop %^H pointing to being-freed hash; #112326

The leave_scope() action SAVEt_HINTS does the following to
GvHV(PL_hintgv): first it SvREFCNT_dec()'s it, then sets it to NULL.
If the current %^H contains a destructor, then that will be
executed while %^H still points to the hash being freed.
This can cause bad things to happen, like iterating over the hash being

Instead, setGvHV(PL_hintgv) to NULL first, *then* free the hash.

11 years agoIncrease $attributes::VERSION to 0.19
Father Chrysostomos [Wed, 11 Apr 2012 04:50:03 +0000 (21:50 -0700)]
Increase $attributes::VERSION to 0.19

11 years agoPut bulk 88’s real name in AUTHORS
Father Chrysostomos [Wed, 11 Apr 2012 04:42:29 +0000 (21:42 -0700)]
Put bulk 88’s real name in AUTHORS

at his request

11 years agoRevert "doco improvement for"
Father Chrysostomos [Wed, 11 Apr 2012 04:41:33 +0000 (21:41 -0700)]
Revert "doco improvement for"

This reverts commit f29a7c30d92b9e3714cce5604d86fb97c1b099e8.

11 years ago[perl #112352] Make ‘use v5.15’ always enable unicode_eval
Father Chrysostomos [Wed, 11 Apr 2012 04:40:38 +0000 (21:40 -0700)]
[perl #112352] Make ‘use v5.15’ always enable unicode_eval

When the unicode_eval feature was added, the code for compiling an
eval was modified to check whether the feature was enabled, before
flagging the op.

For efficiency’s sake, since there was already a block that checked to
see whether %^H was localised (which happens automatically when it is
modified), and since features always used %^H, I put the check inside
that block, so it would be skipped altogether without %^H set.  (It’s
debatable whether it was actually any faster.)

Later, in commit 6634bb9d0ed1, when I changed implicit features to use
$^H, I didn’t update the eval code.  So it would only check to see
whether the feature was enabled if %^H was also enabled.

This fixes that by moving it below the %^H block.

11 years agoAdd bulk 88 to AUTHORS
Father Chrysostomos [Tue, 10 Apr 2012 21:52:29 +0000 (14:52 -0700)]
Add bulk 88 to AUTHORS

I would not have been able to do the previous commit without his help.

11 years ago[perl #109718] Clone PL_comppad properly
Father Chrysostomos [Tue, 10 Apr 2012 03:11:47 +0000 (20:11 -0700)]
[perl #109718] Clone PL_comppad properly

fork emulation on Windows, which clones a new thread via
perl_clone_using, expects to be able to access the current pad imme-
diately after the cloning, and crashes if there is no current pad.

PL_comppad was not being cloned explicitly, but simply looked up in
the pointer table, it being assumed that it had already been cloned.

For string evals, before commit 676a678, PL_compcv happened to point
to the eval’s CV.  PL_compcv is cloned just before PL_comppad is set,
so that worked.

As of commit 676a678, PL_compcv does not point to the eval’s CV
at the eval’s run time, so the pad has not been cloned yet when
PL_comppad is set.

In the case of string evals, the CV does get cloned, but later on,
after PL_comppad is set, when the stacks are cloned.

Changing the setting of PL_comppad to do an actual cloning works, as,
when the eval’s CV is cloned later (during stack cloning), it will
simply pick up the pad that has already been cloned and is waiting for
it in the pointer table.

This stops eval 'fork' from crashing on Windows.

11 years agoTest patch for version 0.97
John Peacock [Thu, 29 Mar 2012 02:22:22 +0000 (22:22 -0400)]
Test patch for version 0.97

I had some isolated test failures with 0.96 from BSDish systems with
limited locales installed.  The attached patch brings bleadperl in line
with the CPAN 0.97 release.  I'd like to see it get into 5.16 if
possible, so that we don't have needless test failures.



Signed-off-by: Chris 'BinGOs' Williams <>
11 years agoperl5160delta.pod: Add to-do note
Father Chrysostomos [Sun, 8 Apr 2012 06:10:27 +0000 (23:10 -0700)]
perl5160delta.pod: Add to-do note

11 years agoperl5160delta.pod: Lvalue sub bugfix section
Father Chrysostomos [Sun, 8 Apr 2012 05:58:11 +0000 (22:58 -0700)]
perl5160delta.pod: Lvalue sub bugfix section

Move all lv sub bug fixes into this section.  Tweak things a bit.

11 years agoperl5160delta.pod: Missing space
Father Chrysostomos [Sun, 8 Apr 2012 05:57:41 +0000 (22:57 -0700)]
perl5160delta.pod: Missing space