From 27b43259a30314eeed47a9b0a14762f75f406575 Mon Sep 17 00:00:00 2001
From: Andrew Yates <ayates@ebi.ac.uk>
Date: Fri, 16 Mar 2012 12:02:14 +0000
Subject: [PATCH] Use weaken for adaptors when doing shallow clones

---
 modules/Bio/EnsEMBL/Slice.pm | 14 ++++++++------
 1 file changed, 8 insertions(+), 6 deletions(-)

diff --git a/modules/Bio/EnsEMBL/Slice.pm b/modules/Bio/EnsEMBL/Slice.pm
index 26eca280fa..d0da79e2ff 100644
--- a/modules/Bio/EnsEMBL/Slice.pm
+++ b/modules/Bio/EnsEMBL/Slice.pm
@@ -1153,15 +1153,16 @@ sub sub_Slice {
   }
 
   #fastest way to copy a slice is to do a shallow hash copy
-  my %new_slice = %$self;
-  $new_slice{'start'} = int($new_start);
-  $new_slice{'end'}   = int($new_end);
-  $new_slice{'strand'} = $new_strand;
+  my $new_slice = {%{$self}};
+  $new_slice->{'start'} = int($new_start);
+  $new_slice->{'end'}   = int($new_end);
+  $new_slice->{'strand'} = $new_strand;
   if( $new_seq ) {
-    $new_slice{'seq'} = $new_seq;
+    $new_slice->{'seq'} = $new_seq;
   }
+  weaken($new_slice->{adaptor});
 
-  return bless \%new_slice, ref($self);
+  return bless $new_slice, ref($self);
 }
 
 
@@ -1196,6 +1197,7 @@ sub seq_region_Slice {
   my $slice;
   %{$slice} = %{$self};
   bless $slice, ref($self);
+  weaken($slice->{adaptor});
 
   $slice->{'start'}  = 1;
   $slice->{'end'}    = $slice->{'seq_region_length'};
-- 
GitLab