[libclass-tiny-perl] 02/02: fix won't stay shared bug
gregor herrmann
gregoa at debian.org
Sun May 31 14:03:26 UTC 2015
This is an automated email from the git hooks/post-receive script.
gregoa pushed a commit to annotated tag release-0.009
in repository libclass-tiny-perl.
commit 931c59e59bcd29dfbc26e880283e552c4bb137ea
Author: David Golden <dagolden at cpan.org>
Date: Tue Sep 17 06:52:46 2013 -0400
fix won't stay shared bug
---
Changes | 4 ++++
lib/Class/Tiny.pm | 9 +++++----
2 files changed, 9 insertions(+), 4 deletions(-)
diff --git a/Changes b/Changes
index 5a824de..e8d4b02 100644
--- a/Changes
+++ b/Changes
@@ -2,6 +2,10 @@ Revision history for Class-Tiny
{{$NEXT}}
+ [FIXED]
+
+ - "won't stay shared" bug on older perls
+
0.008 2013-09-08 09:49:46 America/New_York
[FIXED]
diff --git a/lib/Class/Tiny.pm b/lib/Class/Tiny.pm
index f4ab17f..5411cf2 100644
--- a/lib/Class/Tiny.pm
+++ b/lib/Class/Tiny.pm
@@ -41,18 +41,19 @@ sub create_attributes {
sub _gen_accessor {
my ( $pkg, $name ) = @_;
- my $default = $CLASS_ATTRIBUTES{$pkg}{$name};
+ my $outer_default = $CLASS_ATTRIBUTES{$pkg}{$name};
my $sub = "sub $name { if (\@_ == 1) {";
- if ( defined $default && ref $default eq 'CODE' ) {
+ if ( defined $outer_default && ref $outer_default eq 'CODE' ) {
$sub .= "if ( !exists \$_[0]{$name} ) { \$_[0]{$name} = \$default->(\$_[0]) }";
}
- elsif ( defined $default ) {
+ elsif ( defined $outer_default ) {
$sub .= "if ( !exists \$_[0]{$name} ) { \$_[0]{$name} = \$default }";
}
$sub .= "return \$_[0]{$name} } else { return \$_[0]{$name}=\$_[1] } }";
- eval "package $pkg; $sub"; ## no critic
+ # default = outer_default avoids "won't stay shared" bug
+ eval "package $pkg; my \$default=\$outer_default; $sub"; ## no critic
Carp::croak("Failed to generate attributes for $pkg: $@\n") if $@;
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libclass-tiny-perl.git
More information about the Pkg-perl-cvs-commits
mailing list