use strict;
use warnings;
-use Carp::Clan qw/^DBIx::Class/;
use Try::Tiny;
use Scalar::Util qw/weaken blessed/;
+use DBIx::Class;
use DBIx::Class::Exception;
+use DBIx::Class::Carp;
use namespace::clean;
-# 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 };
- }
-}
-
my ($guards_count, $compat_handler, $foreign_handler);
sub new {
# 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
) {
try { $storage->_seems_connected && $storage->txn_rollback }
catch { $rollback_exception = shift };
- if (defined $rollback_exception && $rollback_exception !~ /DBIx::Class::Storage::NESTED_ROLLBACK_EXCEPTION/) {
+ if ( $rollback_exception and (
+ ! defined blessed $rollback_exception
+ or
+ ! $rollback_exception->isa('DBIx::Class::Storage::NESTED_ROLLBACK_EXCEPTION')
+ ) ) {
# append our text - THIS IS A TEMPORARY FIXUP!
# a real stackable exception object is in the works
if (ref $exception eq 'DBIx::Class::Exception') {
}
}
- $@ = $exception unless IS_BROKEN_PERL;
+ $@ = $exception unless DBIx::Class::_ENV_::INVISIBLE_DOLLAR_AT;
}
1;