]> git.donarmstrong.com Git - mothur.git/commitdiff
fixed memory leak in maligner minCoverageFilter function used by chimera slayer
authorwestcott <westcott>
Thu, 23 Dec 2010 19:41:30 +0000 (19:41 +0000)
committerwestcott <westcott>
Thu, 23 Dec 2010 19:41:30 +0000 (19:41 +0000)
chimeraslayer.cpp
chimeraslayer.h
decalc.cpp
maligner.cpp
mothur

index 3497579167210514496ac904f6c9f19d17140b16..1336876966f110dc25e0e18eee8bd13ec4e8d6fd 100644 (file)
@@ -297,14 +297,14 @@ int ChimeraSlayer::getChimeras(Sequence* query) {
                querySeq = query;
                
                //referenceSeqs, numWanted, matchScore, misMatchPenalty, divR, minSimilarity
-               maligner = new Maligner(templateSeqs, numWanted, match, misMatch, divR, minSim, minCov, searchMethod, databaseLeft, databaseRight);
-               slayer = new Slayer(window, increment, minSim, divR, iters, minSNP);
+               Maligner maligner(templateSeqs, numWanted, match, misMatch, divR, minSim, minCov, searchMethod, databaseLeft, databaseRight);
+               Slayer slayer(window, increment, minSim, divR, iters, minSNP);
        
                if (m->control_pressed) {  return 0;  }
                
-               string chimeraFlag = maligner->getResults(query, decalc);
+               string chimeraFlag = maligner.getResults(query, decalc);
                if (m->control_pressed) {  return 0;  }
-               vector<results> Results = maligner->getOutput();
+               vector<results> Results = maligner.getOutput();
                        
                //found in testing realigning only made things worse
                if (realign) {
@@ -381,16 +381,16 @@ int ChimeraSlayer::getChimeras(Sequence* query) {
                        if (m->control_pressed) {  for (int k = 0; k < seqs.size(); k++) {  delete seqs[k].seq;   }  return 0;  }
                        
                        //send to slayer
-                       chimeraFlags = slayer->getResults(query, seqsForSlayer);
+                       chimeraFlags = slayer.getResults(query, seqsForSlayer);
                        if (m->control_pressed) {  return 0;  }
-                       chimeraResults = slayer->getOutput();
+                       chimeraResults = slayer.getOutput();
                        
                        //free memory
                        for (int k = 0; k < seqs.size(); k++) {  delete seqs[k].seq;   }
                }
                
-               delete maligner;
-               delete slayer;
+               //delete maligner;
+               //delete slayer;
                
                return 0;
        }
index e4615ee8787d481dfad122bd8120ae35e130cdb6..6d57474829e51f44a9eca05021c937ba537cb610 100644 (file)
@@ -38,8 +38,6 @@ class ChimeraSlayer : public Chimera {
        private:
                Sequence* querySeq;
                DeCalculator* decalc;
-               Maligner* maligner;
-               Slayer* slayer;
                map<int, int>  spotMap;
                Database* databaseRight;
                Database* databaseLeft;
index ff68ca514473397c03d27407671c4a74f59f4b09..8d90a78a492e63ee97ede0b577e37fde39336fb4 100644 (file)
@@ -835,8 +835,6 @@ vector<Sequence*> DeCalculator::findClosest(Sequence* querySeq, vector<Sequence*
                        indexes.push_back(dists[i].index);
                }
                
-               dists.clear(); distsLeft.clear(); distsRight.clear();
-               
                return seqsMatches;
        }
        catch(exception& e) {
index 5f522a659e0caf4adf63206ea280d9e130bdf8ae..6deeb8012c5f18937f65b889ad50e69852ece5c9 100644 (file)
@@ -178,6 +178,8 @@ vector<Sequence*> Maligner::minCoverageFilter(vector<Sequence*> ref){
                        //if coverage above minimum
                        if (coverage > minCoverage) {
                                newRefs.push_back(ref[i]);
+                       }else {
+                               delete ref[i];
                        }
                }
                
diff --git a/mothur b/mothur
index 63475918ba321017428142c06e1f5ddfda53373c..25781945bd54a7e6eaf1191e3f2265a5874d80e5 100755 (executable)
Binary files a/mothur and b/mothur differ