[perl.git] branch smoke-me/magical-gvs, deleted. v5.15.2-163-g8997406
In perl.git, the branch smoke-me/magical-gvs has been deleted http://perl5.git.perl.org/perl.git/commitdiff/?hp=899740664b0affdec64ae474a9bf5fd9fc054764 was 899740664b0affdec64ae474a9bf5fd9fc054764 --- 899740664b0affdec64ae474a9bf5fd9fc054764 Avoid an extra SV when creating $] and $^V --- -- Perl5 Master Repository
[perl.git] branch smoke-me/POSIX, created. v5.15.2-191-g4e7931e
In perl.git, the branch smoke-me/POSIX has been created http://perl5.git.perl.org/perl.git/commitdiff/4e7931e6b1b025e56c7b73a89ecec290a7d40018?hp= at 4e7931e6b1b025e56c7b73a89ecec290a7d40018 (commit) - Log - commit 4e7931e6b1b025e56c7b73a89ecec290a7d40018 Author: Nicholas Clark n...@ccl4.org Date: Wed Aug 31 16:41:12 2011 +0200 Test the diagnostics for usage messages for POSIX wrapper functions. Regularise the 3 inconsistent messages. M MANIFEST M ext/POSIX/lib/POSIX.pm A ext/POSIX/t/usage.t commit d7d0d6b065ca7bbbae69f827f19f1b93c87ed0f7 Author: Nicholas Clark n...@ccl4.org Date: Wed Aug 31 15:20:56 2011 +0200 In POSIX, improve the diagnostic for the use $method instead. In the error message, name the POSIX function that was called, as well as the suggested replacement method. This rephrasing was in the patch supplied by Aristotle Pagaltzis, but I have retained the existing POSIX use of :: when describing the method, because given two less than great choices, I'm inclined to favour retaining the status quo and one change over two changes. M ext/POSIX/lib/POSIX.pm M ext/POSIX/t/unimplemented.t commit 1e721acb2389122d9962a0cbe431374475a1a47d Author: Aristotle Pagaltzis pagalt...@gmx.de Date: Wed Aug 31 14:59:57 2011 +0200 In POSIX, drastically simplify the wrappers for unimplemented functions. Replace all the subroutines that croak() with a data structure and 8 lines in POSIX::AUTOLOAD(). [By Aristotle Pagaltzis, with some editing by the committer, and most of his message changes applied as a previous commit to split apart improvements from pure refactoring] This commit eliminates the helper functions POSIX::refef() and POSIX::unimpl(), which were not part of the documented API, not exported, and not used in any code outside the core (that is visible to Google codesearch). M ext/POSIX/lib/POSIX.pm M ext/POSIX/lib/POSIX.pod commit 3d3f7f1a892b71987523a18052d244d41adfd3b1 Author: Nicholas Clark n...@ccl4.org Date: Wed Aug 31 14:32:47 2011 +0200 The more regular POSIX unimplemented diagnostics simplify the tests. M ext/POSIX/t/unimplemented.t commit 0feb969902f50335e681735ffacfc480f3c63e9c Author: Nicholas Clark n...@ccl4.org Date: Wed Aug 31 13:08:49 2011 +0200 Improvements to the diagnostics for unimplemented POSIX functions. Suggested by Aristotle Pagaltzis as part of a larger refactoring. This regularises the text, changing '--use' and ': use' to ', use' to be consistent, provides a message for POSIX::srand(), and adds ' is' to the message for POSIX::bsearch(). Most of the diagnostics have been unchanged since perl 5.000. For some, IO::Handle replaced FileHandle in perl5.003_20 (28757baaaeaa3801). div and ldiv's messages were improved to also mention % in 2003 by commit 7a6ca5fd18d88091. M ext/POSIX/lib/POSIX.pm M ext/POSIX/t/unimplemented.t commit d43884f380102c40f00a25f13e158c46a6b270ae Author: Nicholas Clark n...@ccl4.org Date: Wed Aug 31 12:13:46 2011 +0200 Test the diagnostics for all POSIX::* functions that are unimplemented. M MANIFEST A ext/POSIX/t/unimplemented.t commit 186ba50afcfbac42fa82fd511c6539db24917aa2 Author: Nicholas Clark n...@ccl4.org Date: Wed Aug 31 11:32:17 2011 +0200 In ext/POSIX/t/is.t, make better use of Test::More. cmp_ok() will give better diagnostics than ok(). Using skip_all() is terser, and will give better diagnostics. M ext/POSIX/t/is.t --- -- Perl5 Master Repository
[perl.git] branch blead, updated. v5.15.2-185-g43c6b70
In perl.git, the branch blead has been updated http://perl5.git.perl.org/perl.git/commitdiff/43c6b706eae7899eff9414f3bbb9e5ef095a07fd?hp=3638bf155130331f9a06eff9132885b5f244890f - Log - commit 43c6b706eae7899eff9414f3bbb9e5ef095a07fd Author: Chris 'BinGOs' Williams ch...@bingosnet.co.uk Date: Wed Aug 31 14:51:06 2011 +0100 Updated Locale-Codes to CPAN version 3.18 [DELTA] VERSION 3.18 (2011-08-31) NEW CODE(s) No longer use CIA data The CIA world added non-standard values, so I no longer use it as a source of data. Based on a report by Michiel Beijen. --- Summary of changes: Porting/Maintainers.pl |2 +- cpan/Locale-Codes/lib/Locale/Codes.pm |2 +- cpan/Locale-Codes/lib/Locale/Codes.pod | 13 +- cpan/Locale-Codes/lib/Locale/Codes/Changes.pod | 13 +- cpan/Locale-Codes/lib/Locale/Codes/Constants.pm|2 +- cpan/Locale-Codes/lib/Locale/Codes/Country.pm |2 +- cpan/Locale-Codes/lib/Locale/Codes/Country.pod |7 +- .../Locale-Codes/lib/Locale/Codes/Country_Codes.pm | 1901 +- cpan/Locale-Codes/lib/Locale/Codes/Currency.pm |2 +- .../lib/Locale/Codes/Currency_Codes.pm | 493 +- cpan/Locale-Codes/lib/Locale/Codes/LangExt.pm |2 +- .../Locale-Codes/lib/Locale/Codes/LangExt_Codes.pm |4 +- cpan/Locale-Codes/lib/Locale/Codes/LangVar.pm |2 +- .../Locale-Codes/lib/Locale/Codes/LangVar_Codes.pm |5 +- cpan/Locale-Codes/lib/Locale/Codes/Language.pm |2 +- .../lib/Locale/Codes/Language_Codes.pm |47547 ++-- cpan/Locale-Codes/lib/Locale/Codes/Script.pm |2 +- cpan/Locale-Codes/lib/Locale/Codes/Script_Codes.pm | 264 +- cpan/Locale-Codes/lib/Locale/Country.pm|2 +- cpan/Locale-Codes/lib/Locale/Currency.pm |2 +- cpan/Locale-Codes/lib/Locale/Language.pm |2 +- cpan/Locale-Codes/lib/Locale/Script.pm |2 +- pod/perldelta.pod | 15 +- 23 files changed, 25221 insertions(+), 25067 deletions(-) diff --git a/Porting/Maintainers.pl b/Porting/Maintainers.pl index e38796c..cc2910d 100755 --- a/Porting/Maintainers.pl +++ b/Porting/Maintainers.pl @@ -1101,7 +1101,7 @@ use File::Glob qw(:case); 'Locale-Codes' = { 'MAINTAINER'= 'sbeck', - 'DISTRIBUTION' = 'SBECK/Locale-Codes-3.17.tar.gz', + 'DISTRIBUTION' = 'SBECK/Locale-Codes-3.18.tar.gz', 'FILES' = q[cpan/Locale-Codes], 'EXCLUDED' = [ qw{t/pod_coverage.t t/pod.t}, qr{^t/runtests}, qr{^t/runtests\.bat}, qr{^internal/}, qr{^examples/} ], diff --git a/cpan/Locale-Codes/lib/Locale/Codes.pm b/cpan/Locale-Codes/lib/Locale/Codes.pm index 1a14035..fc7e224 100644 --- a/cpan/Locale-Codes/lib/Locale/Codes.pm +++ b/cpan/Locale-Codes/lib/Locale/Codes.pm @@ -27,7 +27,7 @@ our($VERSION,%Data); # { id} = FIRST_UNUSED_ID # { codealias }{ CODESET } { ALIAS } = CODE -$VERSION='3.17'; +$VERSION='3.18'; #=== # diff --git a/cpan/Locale-Codes/lib/Locale/Codes.pod b/cpan/Locale-Codes/lib/Locale/Codes.pod index d30de20..5f39258 100644 --- a/cpan/Locale-Codes/lib/Locale/Codes.pod +++ b/cpan/Locale-Codes/lib/Locale/Codes.pod @@ -124,11 +124,15 @@ Ideally, I'd only get data from an official source, but sometimes that is not possible. For example the ISO standards are not typically available for free, so I may have to get some of that data from alternate sources that I'm confident are getting their data from the -official source. +official source. However, I will always be hesitant to accept a +non-official source. -As an example, I get some country data from the CIA World +As an example, I used to get some country data from the CIA World Factbook. Given the nature of the source, I'm sure they're updating data from the official sources and I consider it nearly official. +However, even in this case, I found that they were adding codes that +were not part of the standard, so I have stopped using them as a +source. There are many 3rd party sites which maintain lists (many of which are actually in a more convenient form than the official sites). @@ -187,10 +191,11 @@ alias North Korea since that's a very common way to specify the country (please don't request this... I've already added it). On the other hand, a request to add Zaire as an alias for Congo, The -Democratic Republic of may not be honored. The country's official -name is not Zaire, so adding it as an alias violates the standard. +Democratic Republic of will not be honored. The country's official +name is no longer Zaire, so adding it
[perl.git] branch blead, updated. v5.15.2-186-g925798f
In perl.git, the branch blead has been updated http://perl5.git.perl.org/perl.git/commitdiff/925798f29c677c612a63a08a92ebb5f169e27b02?hp=43c6b706eae7899eff9414f3bbb9e5ef095a07fd - Log - commit 925798f29c677c612a63a08a92ebb5f169e27b02 Author: Steve Hay steve.m@googlemail.com Date: Wed Aug 31 18:48:37 2011 +0100 Preliminary cleanup of win32/config*.* prior to updating them fully - Set lseeksize/lseektype to 4/long in new gc64* files (see f7e8b52a89) - Add missing NULL parameter in new gc64* files (see e6a0bbf8b4) - Change new gc64* files to a minimal setup (see d64224560b and 17bdc11416) - Make the order of the __GNUC__ / _MSC_VER logic consistent - Add __GNUC__ magic to vc64 (since new gc64* files have _MSC_VER magic) --- Summary of changes: win32/config.gc64 |4 +- win32/config.gc64nox |4 +- win32/config_H.bc |4 +- win32/config_H.gc |9 ++-- win32/config_H.gc64| 103 +++- win32/config_H.gc64nox | 103 +++- win32/config_H.vc |9 ++-- win32/config_H.vc64| 71 - 8 files changed, 164 insertions(+), 143 deletions(-) diff --git a/win32/config.gc64 b/win32/config.gc64 index c883708..52185f0 100644 --- a/win32/config.gc64 +++ b/win32/config.gc64 @@ -783,8 +783,8 @@ longsize='4' lp='' lpr='' ls='dir' -lseeksize='8' -lseektype='long long' +lseeksize='4' +lseektype='long' mad='undef' madlyh='' madlyobj='' diff --git a/win32/config.gc64nox b/win32/config.gc64nox index 0fe7904..9a797a1 100644 --- a/win32/config.gc64nox +++ b/win32/config.gc64nox @@ -783,8 +783,8 @@ longsize='4' lp='' lpr='' ls='dir' -lseeksize='8' -lseektype='long long' +lseeksize='4' +lseektype='long' mad='undef' madlyh='' madlyobj='' diff --git a/win32/config_H.bc b/win32/config_H.bc index 75213d7..cbb8ae4 100644 --- a/win32/config_H.bc +++ b/win32/config_H.bc @@ -4573,8 +4573,8 @@ * This symbol contains the minimum value for the time_t offset that * the system function localtime () accepts, and defaults to 0 */ -#define GMTIME_MAX 2147483647 /**/ -#define GMTIME_MIN 0 /**/ +#define GMTIME_MAX 2147483647 /**/ +#define GMTIME_MIN 0 /**/ #define LOCALTIME_MAX 2147483647 /**/ #define LOCALTIME_MIN 0 /**/ diff --git a/win32/config_H.gc b/win32/config_H.gc index fbf5808..bd18ffe 100644 --- a/win32/config_H.gc +++ b/win32/config_H.gc @@ -3128,12 +3128,11 @@ * static _inline (older MSVC) * static (c89 compilers) */ -#ifdef _MSC_VER -# define HAS_STATIC_INLINE/**/ -# define PERL_STATIC_INLINE static __inline /**/ -#else /* gcc presumably */ -# define HAS_STATIC_INLINE/**/ +#define HAS_STATIC_INLINE /**/ +#ifndef _MSC_VER # define PERL_STATIC_INLINE static __inline__ /**/ +#else +# define PERL_STATIC_INLINE static __inline /**/ #endif /* USE_STDIO_PTR: diff --git a/win32/config_H.gc64 b/win32/config_H.gc64 index 9cce9fb..e1ff5bc 100644 --- a/win32/config_H.gc64 +++ b/win32/config_H.gc64 @@ -916,14 +916,14 @@ */ #define HAS_QUAD /**/ #ifdef HAS_QUAD -# ifdef _MSC_VER -# define Quad_t __int64 /**/ -# define Uquad_t unsigned __int64 /**/ -# define QUADKIND 5 /**/ -# else /* gcc presumably */ -# define Quad_t long long /**/ -# define Uquad_t unsigned long long /**/ -# define QUADKIND 3 /**/ +# ifndef _MSC_VER +# define Quad_t long long /**/ +# define Uquad_t unsigned long long /**/ +# define QUADKIND 3 /**/ +# else +# define Quad_t __int64 /**/ +# define Uquad_t unsigned __int64 /**/ +# define QUADKIND 5 /**/ # endif # define QUAD_IS_INT 1 # define QUAD_IS_LONG2 @@ -967,7 +967,7 @@ * where library files may be held under a private library, for * instance. */ -#define ARCHNAME MSWin32-x64 /**/ +#define ARCHNAME MSWin32-x86 /**/ /* BIN: * This symbol holds the path of the bin directory where the package will @@ -1033,14 +1033,14 @@ * This symbol is intended to be used along with CPPRUN in the same manner * symbol CPPMINUS is used with CPPSTDIN. It contains either - or . */ -#ifdef _MSC_VER -# define CPPSTDIN cppstdin -# define CPPMINUS -# define CPPRUN cl -nologo -E +#ifndef _MSC_VER +# define CPPSTDIN x86_64-w64-mingw32-gcc -E +# define CPPMINUS - +# define CPPRUN x86_64-w64-mingw32-gcc -E #else -# define CPPSTDIN x86_64-w64-mingw32-gcc -E -# define CPPMINUS - -# define CPPRUN x86_64-w64-mingw32-gcc -E +# define CPPSTDIN cppstdin +# define CPPMINUS +# define CPPRUN cl -nologo
[perl.git] branch blead, updated. v5.15.2-187-g00c1390
In perl.git, the branch blead has been updated http://perl5.git.perl.org/perl.git/commitdiff/00c1390f3fd32e7cc0959bd9d47ee28d14ef7e42?hp=925798f29c677c612a63a08a92ebb5f169e27b02 - Log - commit 00c1390f3fd32e7cc0959bd9d47ee28d14ef7e42 Author: Rafael Garcia-Suarez r...@consttype.org Date: Wed Aug 31 21:59:40 2011 +0200 Make switchC.t pass if the environment variable PERL_UNICODE contains S (actually doing so the quick way, by skipping the last test, that tests for -CS on the shebang line) --- Summary of changes: t/run/switchC.t | 17 +++-- 1 files changed, 11 insertions(+), 6 deletions(-) diff --git a/t/run/switchC.t b/t/run/switchC.t index 5223b00..b1a243c 100644 --- a/t/run/switchC.t +++ b/t/run/switchC.t @@ -28,7 +28,7 @@ like( $r, qr/^$b(?:\r?\n)?$/s, '-CO: no warning on UTF-8 output' ); SKIP: { if (exists $ENV{PERL_UNICODE} ($ENV{PERL_UNICODE} eq || $ENV{PERL_UNICODE} =~ /[SO]/)) { - skip(qq[cannot test with PERL_UNICODE locale or /[SO]/], 1); + skip(qq[cannot test with PERL_UNICODE or /[SO]/], 1); } $r = runperl( switches = [ '-CI', '-w' ], prog = 'print ord(STDIN)', @@ -96,8 +96,13 @@ $r = runperl( switches = [ '-CA', '-w' ], like( $r, qr/^Too late for -CS option at -e line 1\.$/s, '#!perl -C with different -C on command line' ); -$r = runperl( switches = [ '-w' ], - progs= [ '#!perl -CS', 'print chr(256)' ], - stderr = 1, ); -like( $r, qr/^Too late for -CS option at -e line 1\.$/s, - '#!perl -C but not command line' ); +SKIP: { +if (exists $ENV{PERL_UNICODE} $ENV{PERL_UNICODE} =~ /S/) { + skip(qq[cannot test with PERL_UNICODE including S], 1); +} +$r = runperl( switches = [ '-w' ], + progs= [ '#!perl -CS', 'print chr(256)' ], + stderr = 1, ); +like( $r, qr/^Too late for -CS option at -e line 1\.$/s, + '#!perl -C but not command line' ); +} -- Perl5 Master Repository
[perl.git] branch smoke-me/POSIX, deleted. v5.15.2-191-g4e7931e
In perl.git, the branch smoke-me/POSIX has been deleted http://perl5.git.perl.org/perl.git/commitdiff/?hp=4e7931e6b1b025e56c7b73a89ecec290a7d40018 was 4e7931e6b1b025e56c7b73a89ecec290a7d40018 --- 4e7931e6b1b025e56c7b73a89ecec290a7d40018 Test the diagnostics for usage messages for POSIX wrapper functions. --- -- Perl5 Master Repository
[perl.git] branch smoke-me/POSIX, created. v5.15.2-196-g2e10fed
In perl.git, the branch smoke-me/POSIX has been created http://perl5.git.perl.org/perl.git/commitdiff/2e10fed019555dc491c5fd10e0e884ffc4c73559?hp= at 2e10fed019555dc491c5fd10e0e884ffc4c73559 (commit) - Log - commit 2e10fed019555dc491c5fd10e0e884ffc4c73559 Author: Aristotle Pagaltzis pagalt...@gmx.de Date: Wed Aug 31 22:08:21 2011 +0200 Replace use of AutoLoader in POSIX with a custom compilation deferral scheme. M ext/B/t/concise-xs.t M ext/POSIX/lib/POSIX.pm commit d5339fb101922fea33eba946a6f08a7ea415e38b Author: Nicholas Clark n...@ccl4.org Date: Wed Aug 31 20:58:00 2011 +0200 Test the POSIX functions that wrap core builtins. No need to test the 7 tested elsewhere. M MANIFEST A ext/POSIX/t/wrappers.t commit 73fb0f9ff953ebe9633fcc641ba7016bd56439f8 Author: Nicholas Clark n...@ccl4.org Date: Wed Aug 31 18:19:34 2011 +0200 Convert the POSIX waitpid tests to Test::More. Explicitly test POSIX::exit(), POSIX::fork(), POSIX::sleep() and POSIX::waitpid(). Use POSIX::_exit() in the child process. M ext/POSIX/t/waitpid.t commit 6a77c236d7c221690e2a5d51bc972108ecc90f0b Author: Nicholas Clark n...@ccl4.org Date: Wed Aug 31 18:02:00 2011 +0200 Explicitly test both CORE:: and POSIX:: gmtime and localtime. The POSIX:: versions should be identical to the CORE:: versions, as they are just wrappers. But the wrappers need testing. M ext/POSIX/t/time.t commit 3da0f44dabb8a2d91791cb1ca473a6076087f91c Author: Nicholas Clark n...@ccl4.org Date: Wed Aug 31 16:41:12 2011 +0200 Test the diagnostics for usage messages for POSIX wrapper functions. Regularise the 3 inconsistent messages. M MANIFEST M ext/POSIX/lib/POSIX.pm A ext/POSIX/t/usage.t commit 0d9a3185edcf240fe22265bfad4d1a3484c04f1a Author: Nicholas Clark n...@ccl4.org Date: Wed Aug 31 15:20:56 2011 +0200 In POSIX, improve the diagnostic for the use $method instead. In the error message, name the POSIX function that was called, as well as the suggested replacement method. This rephrasing was in the patch supplied by Aristotle Pagaltzis, but I have retained the existing POSIX use of :: when describing the method, because given two less than great choices, I'm inclined to favour retaining the status quo and one change over two changes. M ext/POSIX/lib/POSIX.pm M ext/POSIX/t/unimplemented.t commit 6fa4d69c7ff0aa09376cd48621b8a580c44a2772 Author: Aristotle Pagaltzis pagalt...@gmx.de Date: Wed Aug 31 14:59:57 2011 +0200 In POSIX, drastically simplify the wrappers for unimplemented functions. Replace all the subroutines that croak() with a data structure and 8 lines in POSIX::AUTOLOAD(). [By Aristotle Pagaltzis, with some editing by the committer, and most of his message changes applied as a previous commit to split apart improvements from pure refactoring] This commit eliminates the helper functions POSIX::refef() and POSIX::unimpl(), which were not part of the documented API, not exported, and not used in any code outside the core (that is visible to Google codesearch). M ext/POSIX/lib/POSIX.pm M ext/POSIX/lib/POSIX.pod commit 4cb3c3f87776366be625d4c6a0c5d2f7a9f3168d Author: Nicholas Clark n...@ccl4.org Date: Wed Aug 31 14:32:47 2011 +0200 The more regular POSIX unimplemented diagnostics simplify the tests. M ext/POSIX/t/unimplemented.t commit 47b0b559cf517776541bc579788f233d12a5b98c Author: Nicholas Clark n...@ccl4.org Date: Wed Aug 31 13:08:49 2011 +0200 Improvements to the diagnostics for unimplemented POSIX functions. Suggested by Aristotle Pagaltzis as part of a larger refactoring. This regularises the text, changing '--use' and ': use' to ', use' to be consistent, provides a message for POSIX::srand(), and adds ' is' to the message for POSIX::bsearch(). Most of the diagnostics have been unchanged since perl 5.000. For some, IO::Handle replaced FileHandle in perl5.003_20 (28757baaaeaa3801). div and ldiv's messages were improved to also mention % in 2003 by commit 7a6ca5fd18d88091. M ext/POSIX/lib/POSIX.pm M ext/POSIX/t/unimplemented.t commit 145b7baf31abc312d14ff6a769aee1cd1e0331f0 Author: Nicholas Clark n...@ccl4.org Date: Wed Aug 31 12:13:46 2011 +0200 Test the diagnostics for all POSIX::* functions that are unimplemented. M MANIFEST A ext/POSIX/t/unimplemented.t commit f4dff8b7a1f79f3233ccadccb9169e5f89ff8a8a Author: Nicholas Clark n...@ccl4.org Date: Wed Aug 31 11:32:17 2011 +0200 In ext/POSIX/t/is.t, make better use of Test::More. cmp_ok() will give better diagnostics than ok(). Using skip_all() is terser, and will give better diagnostics. M ext/POSIX/t/is.t
[perl.git] branch zefram/dual_Carp, created. v5.15.2-185-g9160cce
In perl.git, the branch zefram/dual_Carp has been created http://perl5.git.perl.org/perl.git/commitdiff/9160cce3083951532dcef741b8d23311c64e26a5?hp= at 9160cce3083951532dcef741b8d23311c64e26a5 (commit) - Log - commit 9160cce3083951532dcef741b8d23311c64e26a5 Author: Zefram zef...@fysh.org Date: Wed Aug 31 20:59:01 2011 +0100 move Carp to ext/Carp, preparing for dual-lifing --- -- Perl5 Master Repository
[perl.git] branch maint-5.12, updated. v5.12.4-24-gbdbd6a2
In perl.git, the branch maint-5.12 has been updated http://perl5.git.perl.org/perl.git/commitdiff/bdbd6a2672839d2844d23aa185cf6a58dfd266fe?hp=fe2b14024013434281bd9a6383f9d4d84312b355 - Log - commit bdbd6a2672839d2844d23aa185cf6a58dfd266fe Author: Father Chrysostomos spr...@cpan.org Date: Wed Aug 31 14:15:56 2011 -0700 perldelta for Carp memory leak fix M pod/perl5125delta.pod commit 790db5db7e6fc8402a2044ebc8cace4cdf563f50 Author: Father Chrysostomos spr...@cpan.org Date: Thu Aug 18 08:50:02 2011 -0700 [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.) (cherry-picked from af80dd863acea8450a9f41ae03645f4d69dad091) M av.h M perl.c M pp_ctl.c M t/op/caller.t --- Summary of changes: av.h |2 +- perl.c|2 +- pod/perl5125delta.pod |6 ++ pp_ctl.c |2 +- t/op/caller.t | 13 - 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/av.h b/av.h index f8c9d1b..d0bbebd 100644 --- a/av.h +++ b/av.h @@ -29,7 +29,7 @@ struct xpvav { * real if the array needs to be modified in some way. Functions that * modify fake AVs check both flags to call av_reify() as appropriate. * - * Note that the Perl stack and @DB::args have neither flag set. (Thus, + * Note that the Perl stack has neither flag set. (Thus, * items that go on the stack are never refcounted.) * * These internal details are subject to change any time. AV diff --git a/perl.c b/perl.c index 05cea40..3902f22 100644 --- a/perl.c +++ b/perl.c @@ -3779,7 +3779,7 @@ Perl_init_dbargs(pTHX) leak until global destruction. */ av_clear(args); } -AvREAL_off(PL_dbargs); /* XXX should be REIFY (see av.h) */ +AvREIFY_only(PL_dbargs); } void diff --git a/pod/perl5125delta.pod b/pod/perl5125delta.pod index 6c64f5f..850b63b 100644 --- a/pod/perl5125delta.pod +++ b/pod/perl5125delta.pod @@ -183,6 +183,12 @@ CUNIVERSAL::VERSION no longer leaks memory. It started leaking in Perl The C-level Cmy_strftime functions no longer leaks memory. This fixes a memory leak in CPOSIX::strftime [perl #73520]. +=item * + +Ccaller no longer leaks memory when called from the DB package if +C@DB::args was assigned to after the first call to Ccaller. LCarp +was triggering this bug [perl #97010]. + =back =head1 New or Changed Diagnostics diff --git a/pp_ctl.c b/pp_ctl.c index dbec3a9..b9bcc28 100644 --- a/pp_ctl.c +++ b/pp_ctl.c @@ -1799,7 +1799,7 @@ PP(pp_caller) AV * const ary = cx-blk_sub.argarray; const int off = AvARRAY(ary) - AvALLOC(ary); - if (!PL_dbargs) + if (!PL_dbargs || AvREAL(PL_dbargs)) Perl_init_dbargs(aTHX); if (AvMAX(PL_dbargs) AvFILLp(ary) + off) diff --git a/t/op/caller.t b/t/op/caller.t index b857322..196e70e 100644 --- a/t/op/caller.t +++ b/t/op/caller.t @@ -5,7 +5,7 @@ BEGIN { chdir 't' if -d 't'; @INC = '../lib'; require './test.pl'; -plan( tests = 80 ); +plan( tests = 81 ); } my @c; @@ -205,6 +205,17 @@ EOP } } +# This also used to leak [perl #97010]: +{ +my $gone; +sub fwib::DESTROY { ++$gone } +package DB; +sub { () =
[perl.git] branch smoke-me/avreal-padlist, updated. v5.15.2-182-g6882050
In perl.git, the branch smoke-me/avreal-padlist has been updated http://perl5.git.perl.org/perl.git/commitdiff/6882050390a4738d41e949768fa92e4d02a4a666?hp=2bfd61fe1ea9816b3fcae66ab17db341731994d9 - Log - commit 6882050390a4738d41e949768fa92e4d02a4a666 Author: Father Chrysostomos spr...@cpan.org Date: Wed Aug 31 22:42:35 2011 -0700 Cast for g++ --- Summary of changes: pad.c |2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/pad.c b/pad.c index c324d05..763e01b 100644 --- a/pad.c +++ b/pad.c @@ -2156,7 +2156,7 @@ Perl_padlist_dup(pTHX_ AV *srcpad, CLONE_PARAMS *param) dstpad = (AV*)ptr_table_fetch(PL_ptr_table, srcpad); if (dstpad) - return SvREFCNT_inc_simple_NN(dstpad); + return (AV *)SvREFCNT_inc_simple_NN(dstpad); dstpad = newAV(); ptr_table_store(PL_ptr_table, srcpad, dstpad); -- Perl5 Master Repository
[perl.git] branch smoke-me/defined-coresub, created. v5.15.2-185-gd90ccac
In perl.git, the branch smoke-me/defined-coresub has been created http://perl5.git.perl.org/perl.git/commitdiff/d90ccac6bcc343a1552eb2967c07bd8eda7cee37?hp= at d90ccac6bcc343a1552eb2967c07bd8eda7cee37 (commit) - Log - commit d90ccac6bcc343a1552eb2967c07bd8eda7cee37 Author: Father Chrysostomos spr...@cpan.org Date: Wed Aug 31 22:44:57 2011 -0700 defined {CORE::...} --- -- Perl5 Master Repository