In perl.git, the branch blead has been updated <https://perl5.git.perl.org/perl.git/commitdiff/d594884e1d755afc27a0fee39c2025cc581a3dc4?hp=d3a1131a9f5192057ba3745eab6315cb4c8a9713>
- Log ----------------------------------------------------------------- commit d594884e1d755afc27a0fee39c2025cc581a3dc4 Author: Zefram <zef...@fysh.org> Date: Sat Feb 24 00:40:13 2018 +0000 better comments about Carp overload logic The comments originally added by commit c99363aa273278adcad39f32026629b700f9bbc3 for [perl #132828] were unclear and a bit over-excited. commit d0d5e94f451e1e9fec149a7b7a2aaa3ee56f6499 Author: Zefram <zef...@fysh.org> Date: Sat Feb 24 00:25:15 2018 +0000 remove spurious _ part of Carp version number Commit 4764858cb80e76fdba33cc1b3be8fcdef26df754 unwisely changed Carp's version number to an underscored one. Commit c99363aa273278adcad39f32026629b700f9bbc3 incremented the underscored part and copied it to Carp::Heavy. With blead being upstream for Carp, there is no reason for it to have an underscored version number. ----------------------------------------------------------------------- Summary of changes: dist/Carp/lib/Carp.pm | 21 ++++++++++----------- dist/Carp/lib/Carp/Heavy.pm | 2 +- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/dist/Carp/lib/Carp.pm b/dist/Carp/lib/Carp.pm index 8f93af11ac..610e07fe1a 100644 --- a/dist/Carp/lib/Carp.pm +++ b/dist/Carp/lib/Carp.pm @@ -116,7 +116,7 @@ BEGIN { ; } -our $VERSION = '1.47_02'; +our $VERSION = '1.47'; $VERSION =~ tr/_//d; our $MaxEvalLen = 0; @@ -336,17 +336,16 @@ sub format_arg { } else { - # this particular bit of magic looking code is responsible for disabling overloads - # while we are stringifing arguments, otherwise if an overload calls a Carp sub we - # could end up in infinite recursion, which means we will exhaust the C stack and - # then segfault. Calling Carp obviously should not trigger an untrappable exception - # from Carp itself! - Yves if ($pack->can("((")) { - # this eval is required, or fail the overload test - # in dist/Carp/t/vivify_stash.t, which is really quite weird. - # Even if we never enter this block, the presence of the require - # causes the test to fail. This seems like it might be a bug - # in require. Needs further investigation - Yves + # Argument is blessed into a class with overloading, and + # so might have an overloaded stringification. We don't + # want to risk getting the overloaded stringification, + # so we need to use overload::StrVal() below. But it's + # possible that the overload module hasn't been loaded: + # overload methods can be installed without it. So load + # the module here. The eval layer here avoids the + # compile-time effect of require vivifying the target + # module's stash. eval "require overload; 1" or return "use overload failed"; } diff --git a/dist/Carp/lib/Carp/Heavy.pm b/dist/Carp/lib/Carp/Heavy.pm index 75ca4c5225..a82325f4ce 100644 --- a/dist/Carp/lib/Carp/Heavy.pm +++ b/dist/Carp/lib/Carp/Heavy.pm @@ -2,7 +2,7 @@ package Carp::Heavy; use Carp (); -our $VERSION = '1.47_02'; +our $VERSION = '1.47'; $VERSION =~ tr/_//d; # Carp::Heavy was merged into Carp in version 1.12. Any mismatched versions -- Perl5 Master Repository