Slightly golf ::ResultSource::DESTROY and several weaken() calls
Peter Rabbitson [Thu, 14 Apr 2016 12:56:00 +0000 (14:56 +0200)]
No functional changes

lib/DBIx/Class/ResultSet.pm
lib/DBIx/Class/ResultSource.pm
lib/DBIx/Class/Storage/TxnScopeGuard.pm
lib/DBIx/Class/_Util.pm

index b51e05c..0b1f9fa 100644 (file)
@@ -6,7 +6,7 @@ use base qw/DBIx::Class/;
 use DBIx::Class::Carp;
 use DBIx::Class::ResultSetColumn;
 use DBIx::Class::ResultClass::HashRefInflator;
-use Scalar::Util qw/blessed weaken reftype/;
+use Scalar::Util qw( blessed reftype );
 use DBIx::Class::_Util qw(
   dbic_internal_try dump_value
   fail_on_internal_wantarray fail_on_internal_call UNRESOLVABLE_CONDITION
index 847cecb..6fd80d7 100644 (file)
@@ -2366,10 +2366,15 @@ sub DESTROY {
     # if schema is still there reintroduce ourselves with strong refs back to us
     if ($_[0]->{schema}) {
       my $srcregs = $_[0]->{schema}->source_registrations;
-      for (keys %$srcregs) {
-        next unless $srcregs->{$_};
-        $srcregs->{$_} = $_[0] if $srcregs->{$_} == $_[0];
-      }
+
+      defined $srcregs->{$_}
+        and
+      $srcregs->{$_} == $_[0]
+        and
+      $srcregs->{$_} = $_[0]
+        and
+      last
+        for keys %$srcregs;
     }
 
     1;
index 31a2d5b..f961c4e 100644 (file)
@@ -26,11 +26,9 @@ sub new {
   #
   # Deliberately *NOT* using is_exception - if someone left a misbehaving
   # antipattern value in $@, it's not our business to whine about it
-  if( defined $@ and length $@ ) {
-    weaken(
-      $guard->{existing_exception_ref} = (length ref $@) ? $@ : \$@
-    );
-  }
+  weaken(
+    $guard->{existing_exception_ref} = (length ref $@) ? $@ : \$@
+  ) if( defined $@ and length $@ );
 
   $storage->txn_begin;
 
index 6f6ac46..be899ee 100644 (file)
@@ -361,13 +361,13 @@ sub is_exception ($) {
   my $destruction_registry = {};
 
   sub CLONE {
-    $destruction_registry = { map
-      { defined $_ ? ( refaddr($_) => $_ ) : () }
-      values %$destruction_registry
-    };
+    %$destruction_registry = map {
+      (defined $_)
+        ? ( refaddr($_) => $_ )
+        : ()
+    } values %$destruction_registry;
 
-    weaken( $destruction_registry->{$_} )
-      for keys %$destruction_registry;
+    weaken($_) for values %$destruction_registry;
 
     # Dummy NEXTSTATE ensuring the all temporaries on the stack are garbage
     # collected before leaving this scope. Depending on the code above, this
@@ -553,8 +553,8 @@ sub mkdir_p ($) {
       ), 'with_stacktrace');
     }
 
-    my $mark = [];
-    weaken ( $list_ctx_ok_stack_marker = $mark );
+    weaken( $list_ctx_ok_stack_marker = my $mark = [] );
+
     $mark;
   }
 }