This fixes errors with exception objects with incomplete
overloading (like Log::Report::Dispatcher::Try).
# FIXME FRAGILE - any eval that fails but *does not* rethrow between here
# and the unwind will trample over $@ and invalidate the entire mechanism
# There got to be a saner way of doing this...
- if (defined $@ and $@ ne '') {
+ if (defined $@ and "$@" ne '') {
weaken(
$guard->{existing_exception_ref} = (ref $@ ne '') ? $@ : \$@
);
my $exception = $@ if (
defined $@
and
- $@ ne ''
+ "$@" ne ''
and
(
! defined $self->{existing_exception_ref}