]> git.decadent.org.uk Git - maypole.git/blobdiff - lib/Maypole/Model/Base.pm
Fixed MODIFY_CODE_ATTRIBUTES and FETCH_CODE_ATTRIBUTES to work with mod_perl threaded...
[maypole.git] / 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 ) = @_;