]> git.decadent.org.uk Git - maypole.git/blobdiff - debian/patches/109_handle-clone.diff
Added patch to handle interpreter cloning, used by multithreaded MPMs.
[maypole.git] / debian / patches / 109_handle-clone.diff
diff --git a/debian/patches/109_handle-clone.diff b/debian/patches/109_handle-clone.diff
new file mode 100644 (file)
index 0000000..70258d5
--- /dev/null
@@ -0,0 +1,28 @@
+--- trunk.orig/lib/Maypole/Model/Base.pm
++++ trunk/lib/Maypole/Model/Base.pm
+@@ -12,14 +12,23 @@
+     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 ) = @_;