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