Stop Array::natatime from returning an exhausted iterator when being called with...
Florian Ragwitz [Thu, 1 Apr 2010 04:13:44 +0000 (06:13 +0200)]
Changes
lib/Moose/Meta/Attribute/Native/MethodProvider/Array.pm

diff --git a/Changes b/Changes
index b15072a..baf1bb0 100644 (file)
--- a/Changes
+++ b/Changes
@@ -3,6 +3,9 @@ for, noteworthy changes.
 
   [BUG FIXES]
 
+  * Stop the natatime method provided by the native Array trait from returning
+    an exhausted iterator when being called with a callback. (Florian Ragwitz)
+
   * Make Moose::Meta::TypeConstraint::Class correctly reject RegexpRefs.
     (Florian Ragwitz)
 
index a461749..0ccf12e 100644 (file)
@@ -346,12 +346,13 @@ sub natatime : method {
     return sub {
         my ( $instance, $n, $f ) = @_;
         my $it = List::MoreUtils::natatime($n, @{ $reader->($instance) });
-        if ($f) {
-            while (my @vals = $it->()) {
-                $f->(@vals);
-            }
+        return $it unless $f;
+
+        while (my @vals = $it->()) {
+            $f->(@vals);
         }
-        $it;
+
+        return;
     };
 }