Only in Memoize-1.01: blib
Only in Memoize-1.01: Makefile
diff -ruP Memoize-1.01/MANIFEST Memoize-1.01-new/MANIFEST
--- Memoize-1.01/MANIFEST	2001-09-18 00:37:35.000000000 +0100
+++ Memoize-1.01-new/MANIFEST	2003-04-26 20:50:37.000000000 +0100
@@ -29,5 +29,6 @@
 t/expfile.t
 t/flush.t
 t/array_confusion.t
+t/croak.t
 article.html
 TODO
diff -ruP Memoize-1.01/Memoize.pm Memoize-1.01-new/Memoize.pm
--- Memoize-1.01/Memoize.pm	2002-07-12 18:16:00.000000000 +0100
+++ Memoize-1.01-new/Memoize.pm	2003-04-26 20:51:50.000000000 +0100
@@ -244,7 +244,10 @@
     if (exists $cache->{$argstr}) { 
       return $cache->{$argstr};
     } else {
-      my $val = &{$info->{U}}(@_);
+      my $val = eval {
+        &{$info->{U}}(@_);
+      };
+      croak $@ if $@;
       # Scalars are considered to be lists; store appropriately
       if ($info->{O}{SCALAR_CACHE} eq 'MERGE') {
 	$cache->{$argstr} = [$val];
@@ -266,7 +269,10 @@
       # Otherwise, we cached an array containing the returned list:
       return @$val;
     } else {
-      my $q = $cache->{$argstr} = [&{$info->{U}}(@_)];
+      my $q = $cache->{$argstr} = [ eval {
+	  &{$info->{U}}(@_);
+      } ];
+      croak $@ if $@;
       @$q;
     }
   } else {
Only in Memoize-1.01: pm_to_blib
diff -ruP Memoize-1.01/t/croak.t Memoize-1.01-new/t/croak.t
--- Memoize-1.01/t/croak.t	1970-01-01 01:00:00.000000000 +0100
+++ Memoize-1.01-new/t/croak.t	2003-04-26 20:50:54.000000000 +0100
@@ -0,0 +1,33 @@
+#!/usr/bin/perl
+
+use lib '..';
+use Carp qw(croak);
+use Memoize;
+use Config;
+
+$|=1;
+print "1..1\n";
+
+sub a {
+    croak 'urk';
+}
+
+if (not memoize('a')) {
+    warn 'memoize() failed';
+    print "not ok 1\n";
+    exit();
+}
+else {
+    eval { a() };
+    if (not $@) {
+	warn 'failed to see expected exception';
+	print "not ok 1\n";
+    }
+    elsif ($@ !~ /croak.t/) {
+	warn "exception '$@' doesn't mention source file croak.t";
+	print "not ok 1\n";
+    }
+    else {
+	print "ok 1\n";
+    }
+}
