[Bioperl-l] Use of uninitialized value in length at Bio/DB/SeqFeature/Store/DBI/mysql.pm line 1062
Dan Bolser
dan.bolser at gmail.com
Sun Mar 27 00:11:27 UTC 2011
Hi all,
I'm not sure why, but the code in Bio/DB/SeqFeature/Store/DBI/mysql.pm uses:
if (length $source_tag) {
within the '_types_sql' function to test if $source_tag is defined
(and has a length). This obviously fails when $source_tag it isn't
defined, and I see the above error message from my script when I call
the 'features' function (as shown below).
>From tests (thanks to rbuels in #bioperl) it seems the value of $type
is simply 'fwd link intensity', so:
($primary_tag,$source_tag) = split ':',$type,2;
on line 1047 leaves $source_tag undefined.
Here is my proposed fix:
diff --git a/Bio/DB/SeqFeature/Store/DBI/mysql.pm b/Bio/DB/SeqFeature/Sto
index 00103c2..dfc70c0 100644
--- a/Bio/DB/SeqFeature/Store/DBI/mysql.pm
+++ b/Bio/DB/SeqFeature/Store/DBI/mysql.pm
@@ -1057,8 +1057,8 @@ sub _types_sql {
($primary_tag,$source_tag) = split ':',$type,2;
}
- if (length $source_tag) {
- if (length($primary_tag)) {
+ if (defined $source_tag && length $source_tag) {
+ if (defined $primary_tag && length($primary_tag)) {
push @matches,"tl.tag=?";
push @args,"$primary_tag:$source_tag";
}
which seems to work. I'd write some tests, but an old bug that I can't
track down prevents me from running tests on this package
(http://bugzilla.open-bio.org/show_bug.cgi?id=2899).
Cheers,
Dan.
Here are some snippets of code to give context:
my $intensities = Bio::DB::SeqFeature::Store->
new( -adaptor => 'DBI::mysql',
-dsn => 'db:mysql.server.ac.uk',
-user => 'me',
-pass => 'secret',
-verbose => $verbose,
);
my @fwd_intensity = $intensities->
features( -seqid => 'some-id', -type => 'fwd link intensity',
-start => 10,
-end => 200,
);
More information about the Bioperl-l
mailing list