#17449 failed to apply the actual patch. This is it.
Hugo van der Sanden [Thu, 29 Aug 2002 22:56:45 +0000 (22:56 +0000)]
p4raw-id: //depot/perl@17806

lib/Exporter.pm
lib/Exporter/Heavy.pm

index 8b8d4c4..753ea6a 100644 (file)
@@ -9,7 +9,8 @@ require 5.006;
 our $Debug = 0;
 our $ExportLevel = 0;
 our $Verbose ||= 0;
-our $VERSION = '5.566';
+our $VERSION = '5.567';
+our (%Cache);
 $Carp::Internal{Exporter} = 1;
 
 sub as_heavy {
@@ -30,10 +31,10 @@ sub import {
   my $callpkg = caller($ExportLevel);
 
   # We *need* to treat @{"$pkg\::EXPORT_FAIL"} since Carp uses it :-(
-  my($exports, $export_cache, $fail)
-    = (\@{"$pkg\::EXPORT"}, \%{"$pkg\::EXPORT"}, \@{"$pkg\::EXPORT_FAIL"});
+  my($exports, $fail) = (\@{"$pkg\::EXPORT"}, \@{"$pkg\::EXPORT_FAIL"});
   return export $pkg, $callpkg, @_
     if $Verbose or $Debug or @$fail > 1;
+  my $export_cache = ($Cache{$pkg} ||= {});
   my $args = @_ or @_ = @$exports;
 
   local $_;
index 3bdc4b4..5e05803 100644 (file)
@@ -51,7 +51,7 @@ sub heavy_export {
     my($pkg, $callpkg, @imports) = @_;
     my($type, $sym, $oops);
     my($exports, $export_cache) = (\@{"${pkg}::EXPORT"},
-                                   \%{"${pkg}::EXPORT"});
+                                   $Exporter::Cache{$pkg} ||= {});
 
     if (@imports) {
        if (!%$export_cache) {
@@ -144,7 +144,7 @@ sub heavy_export {
     }
 
     my($fail, $fail_cache) = (\@{"${pkg}::EXPORT_FAIL"},
-                              \%{"${pkg}::EXPORT_FAIL"});
+                              $Exporter::FailCache{$pkg} ||= {});
 
     if (@$fail) {
        if (!%$fail_cache) {