This is a live mirror of the Perl 5 development currently hosted at
12 years agoadd new release to perlhist
David Golden [Tue, 20 Jul 2010 07:05:02 +0000 (00:05 -0700)]
add new release to perlhist

12 years agoAdd dual-life.t to MANIFEST
David Golden [Tue, 20 Jul 2010 07:02:21 +0000 (00:02 -0700)]
Add dual-life.t to MANIFEST

12 years agoperl5133delta.pod: finalize update modules list
David Golden [Tue, 20 Jul 2010 07:00:31 +0000 (00:00 -0700)]
perl5133delta.pod: finalize update modules list

12 years agoUpdate Module::Corelist for 5.13.3
David Golden [Tue, 20 Jul 2010 06:25:21 +0000 (23:25 -0700)]
Update Module::Corelist for 5.13.3

12 years agoFix typo in perl5133delta
David Golden [Tue, 20 Jul 2010 05:51:48 +0000 (01:51 -0400)]
Fix typo in perl5133delta

12 years agoFix Pod warning in perl5133delta.pod
David Golden [Tue, 20 Jul 2010 05:49:39 +0000 (01:49 -0400)]
Fix Pod warning in perl5133delta.pod

12 years agoUpdate Changes for version number bump
David Golden [Tue, 20 Jul 2010 05:43:16 +0000 (01:43 -0400)]
Update Changes for version number bump

12 years agoBump the perl version to 5.13.3
David Golden [Tue, 20 Jul 2010 05:04:38 +0000 (22:04 -0700)]
Bump the perl version to 5.13.3

12 years agoAdd exceptions to dual-life.t
David Golden [Tue, 20 Jul 2010 04:51:30 +0000 (21:51 -0700)]
Add exceptions to dual-life.t

12 years agoperl5133delta.pod: editorial changes and cleanup
David Golden [Tue, 20 Jul 2010 00:01:02 +0000 (17:01 -0700)]
perl5133delta.pod: editorial changes and cleanup

12 years agoperl5133delta.pod wrapping and cleanup
David Golden [Mon, 19 Jul 2010 23:39:49 +0000 (16:39 -0700)]
perl5133delta.pod wrapping and cleanup

12 years agoperl5133delta.pod: Acknowledgements and code delta
David Golden [Mon, 19 Jul 2010 23:39:16 +0000 (16:39 -0700)]
perl5133delta.pod: Acknowledgements and code delta

12 years don't flag version 'undef'
David Golden [Mon, 19 Jul 2010 23:10:37 +0000 (16:10 -0700)] don't flag version 'undef'

12 years agoBump module version numbers
David Golden [Mon, 19 Jul 2010 22:53:29 +0000 (15:53 -0700)]
Bump module version numbers

12 years agoadd link to smoke index
David Golden [Mon, 19 Jul 2010 21:55:58 +0000 (14:55 -0700)]
add link to smoke index

12 years agocore-cpan-diff: always use diff and ignore whitspace
David Golden [Mon, 19 Jul 2010 21:33:29 +0000 (14:33 -0700)]
core-cpan-diff: always use diff and ignore whitspace

12 years agocore-cpan-diff: tidied and always show version mismatch
David Golden [Mon, 19 Jul 2010 18:53:28 +0000 (11:53 -0700)]
core-cpan-diff: tidied and always show version mismatch

12 years agobump I18N::LangTags version to 0.35_01
David Golden [Mon, 19 Jul 2010 17:05:12 +0000 (10:05 -0700)]
bump I18N::LangTags version to 0.35_01

12 years agofix spelling err in pod re environmental variable
Jim Cromie [Thu, 15 Jul 2010 17:29:54 +0000 (11:29 -0600)]
fix spelling err in pod re environmental variable

Signed-off-by: David Golden <>
12 years agoperl5133delta: Add a note about Test::Harness's known issues
Ævar Arnfjörð Bjarmason [Mon, 19 Jul 2010 15:57:50 +0000 (15:57 +0000)]
perl5133delta: Add a note about Test::Harness's known issues

Test-Harness RT #59186 and RT #59457 introduced some
regressions. These are being fixed upstream but didn't make it into
this release.

12 years agoperl5133delta: Add commit references to "\400 - \777"
Ævar Arnfjörð Bjarmason [Mon, 19 Jul 2010 15:47:30 +0000 (15:47 +0000)]
perl5133delta: Add commit references to "\400 - \777"

12 years agoperl5133delta: Also note 9644846 in "Improved documen[...]"
Ævar Arnfjörð Bjarmason [Mon, 19 Jul 2010 15:45:18 +0000 (15:45 +0000)]
perl5133delta: Also note 9644846 in "Improved documen[...]"

"Improved documentation of unusual character escapes" was fixed up in

12 years agoperl5133delta: A perldelta entry referenced an invalid commit
Ævar Arnfjörð Bjarmason [Mon, 19 Jul 2010 15:39:45 +0000 (15:39 +0000)]
perl5133delta: A perldelta entry referenced an invalid commit

"Improved documentation of unusual character escapes (bf82ca4)" added
in a0316a43 should have referenced 4068718. There's no bf82ca4 commit
in the perl repository.

12 years agoperl5133delta: Note the tests for "Uppercase X/B allowed.."
Ævar Arnfjörð Bjarmason [Mon, 19 Jul 2010 15:32:06 +0000 (15:32 +0000)]
perl5133delta: Note the tests for "Uppercase X/B allowed.."

12 years agoperl5133delta: Expand on "File::Copy skips suid tests on a nosuid partition"
Ævar Arnfjörð Bjarmason [Mon, 19 Jul 2010 15:27:42 +0000 (15:27 +0000)]
perl5133delta: Expand on "File::Copy skips suid tests on a nosuid partition"

Include the explanation from my cae9400 patch in the perldelta so that
it can be understood when read stand-alone.

12 years agoperl5133delta: Test-Harness to CPAN version 3.21 (6d31366)
Ævar Arnfjörð Bjarmason [Mon, 19 Jul 2010 14:55:35 +0000 (14:55 +0000)]
perl5133delta: Test-Harness to CPAN version 3.21 (6d31366)

12 years agoperl5133delta: Term-ANSIColor was bumped to CPAN version 3.00 (2c33c76)
Ævar Arnfjörð Bjarmason [Mon, 19 Jul 2010 14:44:32 +0000 (14:44 +0000)]
perl5133delta: Term-ANSIColor was bumped to CPAN version 3.00 (2c33c76)

12 years agoperl5133delta: Link from the CvGV() change to Known Problems
Ævar Arnfjörð Bjarmason [Mon, 19 Jul 2010 14:39:11 +0000 (14:39 +0000)]
perl5133delta: Link from the CvGV() change to Known Problems

12 years agoperl5133delta: Note the commit range for "MacOS Classic"
Ævar Arnfjörð Bjarmason [Mon, 19 Jul 2010 14:30:32 +0000 (14:30 +0000)]
perl5133delta: Note the commit range for "MacOS Classic"

12 years agoperl5133delta: Expand on "Uppercase X/B allowed.."
Ævar Arnfjörð Bjarmason [Mon, 19 Jul 2010 14:23:42 +0000 (14:23 +0000)]
perl5133delta: Expand on "Uppercase X/B allowed.."

Mention that C<eval sprintf "%#X", 0x10> now works, and that upper
case hex/binary literals are supported in C and friends.

12 years agoAdd perl5133delta reminder about module linking
David Golden [Mon, 19 Jul 2010 14:23:10 +0000 (07:23 -0700)]
Add perl5133delta reminder about module linking

12 years agoperl5133delta.pod: Removed most XXX and boilerplate
David Golden [Mon, 19 Jul 2010 13:58:24 +0000 (09:58 -0400)]
perl5133delta.pod: Removed most XXX and boilerplate

12 years agoperl5133delta additions and revisions
David Golden [Mon, 19 Jul 2010 13:53:54 +0000 (09:53 -0400)]
perl5133delta additions and revisions

12 years agopods: mention \o{}, 3 octal digits
Karl Williamson [Sun, 18 Jul 2010 19:12:39 +0000 (13:12 -0600)]
pods: mention \o{}, 3 octal digits

This patch adds a mention of \o{} to perlre to avoid the backreference
ambiguities, and uses 3 octal digits in an example, and suggests using 3
digits where 2 were suggested before.

Signed-off-by: David Golden <>
12 years podlators Makefile.PL is CUSTOMIZED
David Golden [Mon, 19 Jul 2010 02:34:07 +0000 (22:34 -0400)] podlators Makefile.PL is CUSTOMIZED

12 years CPANPLUS Makefile.PL is CUSTOMIZED
David Golden [Mon, 19 Jul 2010 02:29:35 +0000 (22:29 -0400)] CPANPLUS Makefile.PL is CUSTOMIZED

12 years agoAdd libnet Makefile.PL to CUSTOMIZED in Maintainers
David Golden [Mon, 19 Jul 2010 01:36:39 +0000 (21:36 -0400)]
Add libnet Makefile.PL to CUSTOMIZED in Maintainers

12 years agoAdd support for CUSTOMIZED in Maintainers.PL
David Golden [Mon, 19 Jul 2010 01:34:54 +0000 (21:34 -0400)]
Add support for CUSTOMIZED in Maintainers.PL

Some dual-life modules have custom files in core that differ from
CPAN.  (e.g. Makefile.PL in libnet)  These files need to be listed
in EXCLUDED, but also in CUSTOMIZED so that we don't flag them
incorrectly as "only in Perl"

12 years agoRemoved Archive-Tar Makefile.PL so it autogenerates
David Golden [Mon, 19 Jul 2010 00:56:33 +0000 (20:56 -0400)]
Removed Archive-Tar Makefile.PL so it autogenerates

12 years agoAdded t/porting/dual-life.t
David Golden [Mon, 19 Jul 2010 00:51:30 +0000 (20:51 -0400)]
Added t/porting/dual-life.t

Because we manually generate Makefiles, any executables need to be
generated from .PL files in utils/.  This test checks if dual-life
executables show up in utils/.

12 years agocore-cpan-diff: improve detection of version mismatches
David Golden [Mon, 19 Jul 2010 00:25:22 +0000 (20:25 -0400)]
core-cpan-diff: improve detection of version mismatches

12 years agoList libnet Makefile.PL as excluded
David Golden [Mon, 19 Jul 2010 00:14:44 +0000 (20:14 -0400)]
List libnet Makefile.PL as excluded

12 years agocore-cpan-diff: perltidy with default settings
David Golden [Sun, 18 Jul 2010 23:20:53 +0000 (19:20 -0400)]
core-cpan-diff: perltidy with default settings

12 years agocore-cpan-diff: various enhancements
David Golden [Sun, 18 Jul 2010 23:10:55 +0000 (19:10 -0400)]
core-cpan-diff: various enhancements

* Extracted directories are cached and re-used
* Perl vs CPAN version mismatches shown in summary output
* Various minor code cleanup

Some diagnostic output was surpressed in diff mode, but not all.
I found the output confusing to follow in diff mode as a result
so I enabled some of the previously surpressed output.

12 years agocore-cpan-diff: fix handling of file:/// urls
David Golden [Sun, 18 Jul 2010 20:02:49 +0000 (16:02 -0400)]
core-cpan-diff: fix handling of file:/// urls

12 years agocore-cpan-diff: remove trailing spaces
David Golden [Sun, 18 Jul 2010 18:50:14 +0000 (14:50 -0400)]
core-cpan-diff: remove trailing spaces

12 years agocore-cpan-diff: add option for local CPAN mirror
David Golden [Sun, 18 Jul 2010 18:47:47 +0000 (14:47 -0400)]
core-cpan-diff: add option for local CPAN mirror

12 years agoperl5133delta.pod: Notes on CvGV reference counting
David Golden [Sun, 18 Jul 2010 18:32:11 +0000 (14:32 -0400)]
perl5133delta.pod: Notes on CvGV reference counting

12 years agoadd CvGV_set() macro and make CvGV() rvalue only
David Mitchell [Sun, 18 Jul 2010 17:18:50 +0000 (18:18 +0100)]
add CvGV_set() macro and make CvGV() rvalue only

Now that CvGV can sometimes be reference counted, stop people from directly
assigning to it (by using CvGV as an lvalue), and instead force them to use

12 years agochange when to make CvGV refcounted
David Mitchell [Sun, 18 Jul 2010 15:21:03 +0000 (16:21 +0100)]
change when to make CvGV refcounted

Rather than making CvGV refcounted if the CV is anon, decide based on
whether the GV pointed to by CvGV holds a reference back to us. Normally
these two will be equivalent, but this way is more robust if people are
doing weird things.

Also spotted an error with cv_clone not clearing the CVf_CVGV_RC flag on
the newly cloned cv. This shouldn't normally matter as it will get set
shortly anyway, but best to keep things logically correct.

12 years agoadd CVf_CVGV_RC flag
David Mitchell [Sun, 18 Jul 2010 14:07:08 +0000 (15:07 +0100)]
add CVf_CVGV_RC flag

after the recent commit 803f274831f937654d48f8cf0468521cbf8f5dff,
the CvGV field is sometimes reference counted. Since it was intended that
the reference counting would happen only for anonymous CVs, the CVf_ANON
flag was co-opted to indicate whether RC was being used. This is not
entirely robust; for example, sub __ANON__ {} is a non-anon sub which
points to the same GV used by anon subs, which while itself doesn't
directly break things, shows that the potential for breakage is there.

So add a separate flag just to indicate the reference count status of the
CvGV field.

12 years agoFix address of register error from 26a0cb8
David Golden [Sun, 18 Jul 2010 01:50:40 +0000 (21:50 -0400)]
Fix address of register error from 26a0cb8

12 years agoperlop.pod: document \o{} escape
David Golden [Sat, 17 Jul 2010 20:27:21 +0000 (16:27 -0400)]
perlop.pod: document \o{} escape

This is a merge resolution based on original work by Karl Williamson.

12 years agoAdd \o{} escape
Karl Williamson [Thu, 15 Jul 2010 23:28:28 +0000 (17:28 -0600)]
Add \o{} escape

This commit adds the new construct \o{} to express a character constant
by its octal ordinal value, along with ancillary tests and

A function to handle this is added to util.c, and it is called from the
3 parsing places it could occur.  The function is a candidate for
in-lining, though I doubt that it will ever be used frequently.

12 years agoperlrebackslash: Nits
Karl Williamson [Thu, 15 Jul 2010 19:34:50 +0000 (13:34 -0600)]
perlrebackslash: Nits

Signed-off-by: David Golden <>
12 years agoperlreref.pod: Nits
Karl Williamson [Thu, 15 Jul 2010 18:25:13 +0000 (12:25 -0600)]
perlreref.pod: Nits

Signed-off-by: David Golden <>
12 years agoperlre.pod: Nits
Karl Williamson [Thu, 15 Jul 2010 17:40:14 +0000 (11:40 -0600)]
perlre.pod: Nits

Signed-off-by: David Golden <>
12 years agoNits in perlrebackslash
Karl Williamson [Thu, 24 Jun 2010 20:41:28 +0000 (14:41 -0600)]
Nits in perlrebackslash

Signed-off-by: David Golden <>
12 years agoAdd tests for \400 for "" strings, s//replacement/
Karl Williamson [Thu, 24 Jun 2010 17:00:06 +0000 (11:00 -0600)]
Add tests for \400 for "" strings, s//replacement/

Signed-off-by: David Golden <>
12 years ago\400 -\777 now means the same thing in all d-quote
Karl Williamson [Thu, 24 Jun 2010 14:21:27 +0000 (08:21 -0600)]
\400 -\777 now means the same thing in all d-quote

Prior to this patch, \400 - \777 meant something different in some
circumstances in regexes outside bracketed character classes.  A
deprecated warning message has been in place since 5.10.1 when this
happens.  Remove the warning, and bring the behavior into line with the
other double-quotish contexts.  \400 - \777 now always means the same
thing as \x{100} - \x{1FF} (except when the octal forms  are taken as

Signed-off-by: David Golden <>
12 years agoAdd examples to perlre on perils of not using \g{}
Karl Williamson [Thu, 24 Jun 2010 14:06:27 +0000 (08:06 -0600)]
Add examples to perlre on perils of not using \g{}

These come from Abigail.

Signed-off-by: David Golden <>
12 years agoRemove extra blanks from t/re/re_tests, vim
Karl Williamson [Thu, 24 Jun 2010 00:53:56 +0000 (18:53 -0600)]
Remove extra blanks from t/re/re_tests, vim

My vim settings were causing extra blanks in this file; remove the ones
I added recently and set the vim options to disable the offending

Signed-off-by: David Golden <>
12 years agoReinstate aa3f85c5f369736a7e50055b726cf2ca11336ce9.
Craig A. Berry [Sat, 17 Jul 2010 22:46:48 +0000 (17:46 -0500)]
Reinstate aa3f85c5f369736a7e50055b726cf2ca11336ce9.

Which was clobbered by 7b0eef92ba8ed2aa84e9187dadebc5cabfc3a3c5.

And still awaiting upstream integration at:


Also bumped the version this time to leave a better clue that something
has changed in blead.

12 years agoIn pp_qr, use gv_stashsv() directly on the SV.
Nicholas Clark [Sat, 17 Jul 2010 12:00:46 +0000 (13:00 +0100)]
In pp_qr, use gv_stashsv() directly on the SV.

Brought to you by the campaign for the elimination of strlen().

12 years agoAvoid test suite hang with new readline test on VMS.
Craig A. Berry [Fri, 16 Jul 2010 17:04:54 +0000 (12:04 -0500)]
Avoid test suite hang with new readline test on VMS.

12 years agoAdd Perl_blockhook_register to perl5133delta.
Ben Morrow [Fri, 16 Jul 2010 16:15:19 +0000 (17:15 +0100)]
Add Perl_blockhook_register to perl5133delta.

Signed-off-by: David Golden <>
12 years agoUpdate perl5133delta
Josh ben Jore [Fri, 16 Jul 2010 06:00:25 +0000 (06:00 +0000)]
Update perl5133delta

12 years agoThe debugger now continues to use RemotePort when it's been configured to use it.
Josh ben Jore [Tue, 13 Jul 2010 21:49:57 +0000 (14:49 -0700)]
The debugger now continues to use RemotePort when it's been configured to use it.

12 years agoperlop.pod: Rephrase hexadecimal escape wording
David Golden [Thu, 15 Jul 2010 02:26:33 +0000 (20:26 -0600)]
perlop.pod: Rephrase hexadecimal escape wording

Clarifies how hexadecimal escapes are interpreted, with particular
attention to the treatment of invalid characters.

Based on an original draft patch by Karl Williamson.

12 years agoAdd summary list mode to git-deltatool
David Golden [Fri, 16 Jul 2010 03:55:50 +0000 (23:55 -0400)]
Add summary list mode to git-deltatool

12 years agoMore perl5133delta updates
David Golden [Fri, 16 Jul 2010 03:48:07 +0000 (23:48 -0400)]
More perl5133delta updates

12 years agoMention that Ask did not actually release 5.11.6
Leon Brocard [Thu, 15 Jul 2010 19:42:08 +0000 (20:42 +0100)]
Mention that Ask did not actually release 5.11.6

12 years agoSmall spelling/grammar nit to Locale::Maketext::Guts*
Jesse Vincent [Thu, 15 Jul 2010 18:42:53 +0000 (14:42 -0400)]
Small spelling/grammar nit to Locale::Maketext::Guts*

12 years agoClean up older Locale::Maketext internals to no longer do crazy string
Todd Rinaldo [Thu, 15 Jul 2010 18:24:07 +0000 (14:24 -0400)]
Clean up older Locale::Maketext internals to no longer do crazy string
eval tricks.

12 years agouse modern Perl style in example
Alexandr Ciornii [Tue, 11 May 2010 15:41:22 +0000 (18:41 +0300)]
use modern Perl style in example

Signed-off-by: David Golden <>
12 years agoMake example work with "use strict" by eliminating barewords.
Alexandr Ciornii [Tue, 11 May 2010 15:39:19 +0000 (18:39 +0300)]
Make example work with "use strict" by eliminating barewords.

Signed-off-by: David Golden <>
12 years agoStop using $ENV{LESS} for parameters not intended for less
Josh ben Jore [Thu, 15 Jul 2010 13:06:28 +0000 (13:06 +0000)]
Stop using $ENV{LESS} for parameters not intended for less

12 years agoConfigure has a path to less and can use it
Josh ben Jore [Thu, 15 Jul 2010 13:04:26 +0000 (13:04 +0000)]
Configure has a path to less and can use it

12 years agoMacros to en/disable blockhook entries.
Ben Morrow [Tue, 13 Jul 2010 21:20:21 +0000 (22:20 +0100)]
Macros to en/disable blockhook entries.

This allows the individual callbacks to be switched on and off as
necessary, without removing the entry from PL_blockhooks.

12 years agoUpdate MANIFEST.
Ben Morrow [Tue, 13 Jul 2010 20:06:19 +0000 (21:06 +0100)]

Properly, this time.

12 years agoRemove diagnostics from XS-APItest/t/blockhooks.
Ben Morrow [Tue, 13 Jul 2010 20:02:29 +0000 (21:02 +0100)]
Remove diagnostics from XS-APItest/t/blockhooks.

They were causing problems with 'make test'.

12 years ago[perl #72729] Test appending sv_gets for ascii/utf8 in target and handle
Josh ben Jore [Thu, 15 Jul 2010 05:08:24 +0000 (22:08 -0700)]
[perl #72729] Test appending sv_gets for ascii/utf8 in target and handle

12 years ago[perl #72729] TODO for aborted readline() returning '' instead of undef
Josh ben Jore [Thu, 15 Jul 2010 05:06:16 +0000 (22:06 -0700)]
[perl #72729] TODO for aborted readline() returning '' instead of undef

12 years ago[perl #72729] Truncate sv_gets(sv) only when not appending to a string
Josh ben Jore [Thu, 15 Jul 2010 05:02:28 +0000 (22:02 -0700)]
[perl #72729] Truncate sv_gets(sv) only when not appending to a string

12 years agoAdd a 'blocking' type for git-deltatool
David Golden [Thu, 15 Jul 2010 02:00:41 +0000 (22:00 -0400)]
Add a 'blocking' type for git-deltatool

12 years agoPATCH: [perl #76502] Fix doc
Karl Williamson [Wed, 14 Jul 2010 23:21:40 +0000 (17:21 -0600)]
PATCH: [perl #76502] Fix doc

Thank you for your bug report.  Change <lower> to <upper> as the report

Signed-off-by: David Golden <>
12 years agoprotect CvGV weakref with backref
David Mitchell [Mon, 12 Jul 2010 19:53:04 +0000 (20:53 +0100)]
protect CvGV weakref with backref

Each CV usually has a pointer, CvGV(cv), back to the GV that corresponds
to the CV's name (or to *foo::__ANON__ for anon CVs).  This pointer wasn't
reference counted, to avoid loops. This could leave it dangling if the GV
is deleted.

We fix this by:

For named subs, adding backref magic to the GV, so that when the GV is
freed, it can trigger processing the CV's CvGV field. This processing
consists of: if it looks like the freeing of the GV is about to trigger
freeing of the CV too, set it to NULL; otherwise make it point to
*foo::__ANON__ (and set CvAONON(cv)).

For anon subs, make CvGV a strong reference, i.e. increment the refcnt of
*foo::__ANON__. This doesn't cause a loop, since in this case the
__ANON__ glob doesn't point to the CV. This also avoids dangling pointers
if someone does an explicit 'delete $foo::{__ANON__}'.

Note that there was already some partial protection for CvGV with
commit f1c32fec87699aee2eeb638f44135f21217d2127. This worked by
anonymising any corresponding CV when freeing a stash or stash entry.
This had two drawbacks. First it didn't fix CVs that were anonmous or that
weren't currently pointed to by the GV (e.g. after local *foo), and
second, it caused *all* CVs to get anonymised during cleanup, even the
ones that would have been deleted shortly afterwards anyway. This commit
effectively removes that former commit, while reusing a bit of the
actual anonymising code.

12 years agoin CLONEf_JOIN_IN, cache found stashes
David Mitchell [Mon, 5 Jul 2010 21:25:12 +0000 (22:25 +0100)]
in CLONEf_JOIN_IN, cache found stashes

When joining a thread, we skip cloning a stash if a stash of the same
name already exists in the parent thread. Add it to PL_ptr_table too, so
we don't have to repeat the expensive name comparison each time

12 years agoadd all stash backrefs individually when joining
David Mitchell [Mon, 5 Jul 2010 21:07:30 +0000 (22:07 +0100)]
add all stash backrefs individually when joining

When joining a thread, a 'mini' interpreter clone is performed to
clone the returned SVs and dependents back into the parent interpreter.
To make things simple in this case, don't clone the xhv_backreferences
array of any stashes, but individually add in any cloned GVs and CVs
whose [CG]vSTASH points that way. This is faster (avoids an expensive test
per CV/GV) and better (doesn't clone unnecessary SVs in the backref array)

12 years agomake it an error to look for magic hv backref
David Mitchell [Mon, 5 Jul 2010 20:11:21 +0000 (21:11 +0100)]
make it an error to look for magic hv backref

Now that we only store a stash's backref AV in xhv_backreferences,
make it a panic if we don't find it there, rather than falling back to
look for backref magic.

12 years agoprotect CvSTASH weakref with backrefs
David Mitchell [Mon, 5 Jul 2010 19:40:33 +0000 (20:40 +0100)]
protect CvSTASH weakref with backrefs

Each CV usually has a pointer, CvSTASH, back to the stash that it was
complied in. This pointer isn't reference counted, to avoid loops. Which
can leave it dangling if the stash is deleted.

There is already protection for the similar GvSTASH field in GVs: the
stash has an array of backrefs, xhv_backreferences, pointing to the GVs
whose GvSTASHes point to it, and which is used to zero all the GvSTASH
fields should the stash be deleted.

All this patch does is also add the CVs with CvSTASH to that stash's
backref list too.

12 years agotidy some code in gv_init()
David Mitchell [Sun, 4 Jul 2010 20:44:35 +0000 (21:44 +0100)]
tidy some code in gv_init()

Use an intermediate variable cv to avoid lots of GvCV(gv)'s

12 years agoprocess xhv_backreferences early in S_hfreeentries
David Mitchell [Sun, 4 Jul 2010 19:51:35 +0000 (20:51 +0100)]
process xhv_backreferences early in S_hfreeentries

When deleting a stash, make the algorithm
    GvSTASH($_) = NULL for (@xhv_backreferences);
    delete xhv_backreferences;
    free each stash entry;

Previously the algorithm was

    hide xhv_backreferences as ordinary backref magic;
    free each stash entry:
this may trigger a sv_del_backref() for each GV being freed
    delete @xhv_backreferences

The new method is:

* more efficient: one scan through @xhv_backreferences rather than lots of
calls to sv_del_backref(), removing elements one by one;

* makes the code simpler; the 'hide xhv_backreferences as backref magic'
hack no longer needs to be done

* removes a bug whereby GVs that had a refcnt > 1 (the usual case) were
left with a GvSTASH pointing to the freed stash; it's now NULL instead. I
couldn't think of a test for this.

There are two drawbacks:

* If the GV gets freed at the same time as the stash, the freeing code
sees the GV with a GVSTASH of NULL rather than still pointing to the

* As far as I can see, the only difference this currently makes is that
mro_method_changed_in() is no longer called by sv_clear(), but since we're
blowing away the whole stash anyway, method resolution doesn't really
bother us any more.

At some point in the future I might set GvSTASH to %__ANON__ rather than

12 years ago[perl #72729] Test that sv_gets doesn't revive dead strings
Josh ben Jore [Wed, 14 Jul 2010 06:57:14 +0000 (23:57 -0700)]
[perl #72729] Test that sv_gets doesn't revive dead strings

12 years agoAdd t/op/readline.t docs
Josh ben Jore [Wed, 14 Jul 2010 06:56:29 +0000 (23:56 -0700)]
Add t/op/readline.t docs

12 years agoAdd x-ref from call site in do_readline() of sv_grow() to it's matching test in t...
Josh ben Jore [Wed, 14 Jul 2010 04:33:34 +0000 (21:33 -0700)]
Add x-ref from call site in do_readline() of sv_grow() to it's matching test in t/op/readline.t

12 years agoUpdate template for linked perldelta sections in deltatool
David Golden [Wed, 14 Jul 2010 15:02:54 +0000 (11:02 -0400)]
Update template for linked perldelta sections in deltatool

12 years agoAdd help and fix doc typo for git-deltatool
David Golden [Wed, 14 Jul 2010 14:54:22 +0000 (10:54 -0400)]
Add help and fix doc typo for git-deltatool

12 years agoRevise perldelta template to group doc/utility bullets
David Golden [Wed, 14 Jul 2010 02:07:35 +0000 (22:07 -0400)]
Revise perldelta template to group doc/utility bullets

12 years agoFix transient pod infelicities spotted by podcheck.t
Nicholas Clark [Tue, 13 Jul 2010 19:20:21 +0000 (20:20 +0100)]
Fix transient pod infelicities spotted by podcheck.t