X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FCursor.pm;fp=lib%2FDBIx%2FClass%2FStorage%2FDBI%2FCursor.pm;h=d9004315bb9ab76ae922ca5fc068e9b607dda8c5;hb=ddcc02d14d03169c54c65db9f0f446836483ba55;hp=6fdfdf9e4705484fa3f3c15c5e95a0758b98c1c8;hpb=db83437ef48f4571e1d225572cc7235eb5e64fe3;p=dbsrgits%2FDBIx-Class.git diff --git a/lib/DBIx/Class/Storage/DBI/Cursor.pm b/lib/DBIx/Class/Storage/DBI/Cursor.pm index 6fdfdf9..d900431 100644 --- a/lib/DBIx/Class/Storage/DBI/Cursor.pm +++ b/lib/DBIx/Class/Storage/DBI/Cursor.pm @@ -5,10 +5,9 @@ use warnings; use base 'DBIx::Class::Cursor'; -use Try::Tiny; use Scalar::Util qw(refaddr weaken); use List::Util 'shuffle'; -use DBIx::Class::_Util 'detected_reinvoked_destructor'; +use DBIx::Class::_Util qw( detected_reinvoked_destructor dbic_internal_try ); use namespace::clean; __PACKAGE__->mk_group_accessors('simple' => @@ -251,8 +250,17 @@ sub __finish_sth { my $self = shift; # No need to care about failures here - try { local $SIG{__WARN__} = sub {}; $self->{sth}->finish } if ( - $self->{sth} and ! try { ! $self->{sth}->FETCH('Active') } + dbic_internal_try { + local $SIG{__WARN__} = sub {}; + $self->{sth}->finish + } if ( + $self->{sth} + and + # weird double-negative to catch the case of ->FETCH throwing + # and attempt a finish *anyway* + ! dbic_internal_try { + ! $self->{sth}->FETCH('Active') + } ); }