: sub () { 0 }
;
+ # There was a brief period of p5p insanity when $@ was invisible in a DESTROY
+ *INVISIBLE_DOLLAR_AT = ($] >= 5.013001 and $] <= 5.013007)
+ ? sub () { 1 }
+ : sub () { 0 }
+ ;
+
# During 5.13 dev cycle HELEMs started to leak on copy
*PEEPEENESS = (defined $ENV{DBICTEST_ALL_LEAKS}
# request for all tests would force "non-leaky" illusion and vice-versa
else { 0 }
}
) ? sub () { 1 } : sub () { 0 };
+
}
use mro 'c3';
use warnings;
use Try::Tiny;
use Scalar::Util qw/weaken blessed/;
+use DBIx::Class;
use DBIx::Class::Exception;
use DBIx::Class::Carp;
-
-# temporary until we fix the $@ issue in core
-# we also need a real appendable, stackable exception object
-# (coming soon)
-BEGIN {
- if ($] >= 5.013001 and $] <= 5.013007) {
- *IS_BROKEN_PERL = sub () { 1 };
- }
- else {
- *IS_BROKEN_PERL = sub () { 0 };
- }
-}
-
use namespace::clean;
my ($guards_count, $compat_handler, $foreign_handler);
# install a callback carefully
- if (IS_BROKEN_PERL and !$guards_count) {
+ if (DBIx::Class::_ENV_::INVISIBLE_DOLLAR_AT and !$guards_count) {
# if the thrown exception is a plain string, wrap it in our
# own exception class
# don't touch unless it's ours, and there are no more of us left
if (
- IS_BROKEN_PERL
+ DBIx::Class::_ENV_::INVISIBLE_DOLLAR_AT
and
!$guards_count
) {
}
}
- $@ = $exception unless IS_BROKEN_PERL;
+ $@ = $exception unless DBIx::Class::_ENV_::INVISIBLE_DOLLAR_AT;
}
1;
delete $weak_registry->{$slot}
unless $cleared->{hash_merge_singleton}{$weak_registry->{$slot}{weakref}{behavior}}++;
}
- elsif ($slot =~ /^__TxnScopeGuard__FIXUP__/) {
+ elsif (DBIx::Class::_ENV_::INVISIBLE_DOLLAR_AT and $slot =~ /^__TxnScopeGuard__FIXUP__/) {
delete $weak_registry->{$slot}
- if $] > 5.013001 and $] < 5.013008;
}
elsif ($slot =~ /^DateTime::TimeZone/) {
# DT is going through a refactor it seems - let it leak zones for now