]> git.decadent.org.uk Git - maypole.git/commitdiff
Fixed MODIFY_CODE_ATTRIBUTES and FETCH_CODE_ATTRIBUTES to work with mod_perl threaded...
authorAaron Trevena <aaron.trevena@gmail.com>
Thu, 17 Apr 2008 19:55:40 +0000 (19:55 +0000)
committerAaron Trevena <aaron.trevena@gmail.com>
Thu, 17 Apr 2008 19:55:40 +0000 (19:55 +0000)
Patch from Ben Hutchings http://rt.cpan.org/Public/Bug/Display.html?id=29984

git-svn-id: http://svn.maypole.perl.org/Maypole/trunk@585 48953598-375a-da11-a14b-00016c27c3ee

lib/Maypole/Model/Base.pm

index b4f75c8a0824df25d0238128aeba03e13d518eeb..450b760fc1447f9a79db7a94bbae0d0aeef87f8d 100644 (file)
@@ -7,19 +7,26 @@ use attributes ();
 # don't know why this is a global - drb
 our %remember;
 
-sub MODIFY_CODE_ATTRIBUTES 
-{ 
+sub MODIFY_CODE_ATTRIBUTES {
     shift; # class name not used
     my ($coderef, @attrs) = @_;
-    
-    $remember{$coderef} = \@attrs; 
-    
+    $remember{$coderef} = [$coderef, \@attrs];
+
     # previous version took care to return an empty array, not sure why, 
     # but shall cargo cult it until know better
     return; 
 }
 
-sub FETCH_CODE_ATTRIBUTES { @{ $remember{$_[1]} || [] } }
+sub FETCH_CODE_ATTRIBUTES { @{ $remember{$_[1]}->[1] || [] } }
+
+sub CLONE {
+ # re-hash %remember
+ for my $key (keys %remember) {
+ my $value = delete $remember{$key};
+ $key = $value->[0];
+ $remember{$key} = $value;
+ }
+}
 
 sub process {
     my ( $class, $r ) = @_;