Dumpvalue: handle one more potential warning
authorJames E Keenan <jkeenan@cpan.org>
Sat, 12 Oct 2019 00:01:26 +0000 (20:01 -0400)
committerJames E Keenan <jkeenan@cpan.org>
Sat, 12 Oct 2019 00:01:26 +0000 (20:01 -0400)
While working on adding tests to this module, the following warning
sometimes appeared:

        Use of each() on hash after insertion without resetting hash
        iterator results in undefined behavior

Per perldiag, instead use 'keys' function to iterate over hash.

dist/Dumpvalue/lib/Dumpvalue.pm

index ff9efe1..0bec4cb 100644 (file)
@@ -422,7 +422,6 @@ sub dumpvars {
   my $self = shift;
   my ($package,@vars) = @_;
   local(%address,$^W);
-  my ($key,$val);
   $package .= "::" unless $package =~ /::$/;
   *stab = *main::;
 
@@ -432,7 +431,8 @@ sub dumpvars {
   $self->{TotalStrings} = 0;
   $self->{Strings} = 0;
   $self->{CompleteTotal} = 0;
-  while (($key,$val) = each(%stab)) {
+  for my $k (keys %stab) {
+    my ($key,$val) = ($k, $stab{$k});
     return if $DB::signal and $self->{stopDbSignal};
     next if @vars && !grep( matchvar($key, $_), @vars );
     if ($self->{usageOnly}) {