]> git.vpit.fr Git - perl/modules/Variable-Magic.git/blobdiff - t/lib/Variable/Magic/TestWatcher.pm
Protect $@ inside Variable::Magic::TestWatcher::init_watcher
[perl/modules/Variable-Magic.git] / t / lib / Variable / Magic / TestWatcher.pm
index f9ba0ea1a91df2e4ddfad993b731ee04ec0330d8..a8499226e06232d82de7b5ca2d67492b4149e143 100644 (file)
@@ -28,6 +28,7 @@ sub init_watcher ($;$) {
  croak 'can\'t initialize twice' if defined $wiz;
  my $types = _types shift;
  $prefix   = (defined) ? "$_: " : '' for shift;
+ local $@;
  %mg  = ();
  $wiz = eval 'wizard ' . join(', ', map {
   "$_ => sub { \$mg{$_}++;" . ($_ eq 'len' ? '$_[2]' : '0') . '}'
@@ -45,7 +46,10 @@ sub watch (&;$$) {
  my @ret;
  local %mg = ();
  local $Test::Builder::Level = ($Test::Builder::Level || 0) + 1;
- if (defined $want and not $want) { # scalar context
+ local $@;
+ if (not defined $want) { # void context
+  eval { $code->() };
+ } elsif (not $want) { # scalar context
   $ret[0] = eval { $code->() };
  } else {
   @ret = eval { $code->() };