-$res = eval { dispell $a, $wiz };
-ok(!$@, "re-dispell croaks ($@)");
-ok($res, 're-dispell invalid');
+$res = eval { dispell $a, gensig };
+ok(!$@, "re-dispell from wrong sig doesn't croak ($@)");
+ok(!defined($res), 're-dispell from wrong sig returns undef');
+
+$res = eval { dispell $a, undef };
+ok($@, "re-dispell from undef croaks ($@)");
+ok(!defined($res), 're-dispell from undef returns undef');
+
+$res = eval { dispell $a, $sig };
+ok(!$@, "re-dispell from good sig doesn't croak ($@)");
+ok($res, 're-dispell from good sig is valid');
+
+$res = eval { dispell my $b, $wiz };
+ok(!$@, "dispell non-magic object doesn't croak ($@)");
+is($res, 0, 'dispell non-magic object returns 0');