From: westcott Date: Thu, 23 Dec 2010 19:41:30 +0000 (+0000) Subject: fixed memory leak in maligner minCoverageFilter function used by chimera slayer X-Git-Url: https://git.donarmstrong.com/?p=mothur.git;a=commitdiff_plain;h=f1e2f581f91d88e9d6c7a69e495b36031b29e4ab fixed memory leak in maligner minCoverageFilter function used by chimera slayer --- diff --git a/chimeraslayer.cpp b/chimeraslayer.cpp index 3497579..1336876 100644 --- a/chimeraslayer.cpp +++ b/chimeraslayer.cpp @@ -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 = maligner->getOutput(); + vector 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; } diff --git a/chimeraslayer.h b/chimeraslayer.h index e4615ee..6d57474 100644 --- a/chimeraslayer.h +++ b/chimeraslayer.h @@ -38,8 +38,6 @@ class ChimeraSlayer : public Chimera { private: Sequence* querySeq; DeCalculator* decalc; - Maligner* maligner; - Slayer* slayer; map spotMap; Database* databaseRight; Database* databaseLeft; diff --git a/decalc.cpp b/decalc.cpp index ff68ca5..8d90a78 100644 --- a/decalc.cpp +++ b/decalc.cpp @@ -835,8 +835,6 @@ vector DeCalculator::findClosest(Sequence* querySeq, vector Maligner::minCoverageFilter(vector ref){ //if coverage above minimum if (coverage > minCoverage) { newRefs.push_back(ref[i]); + }else { + delete ref[i]; } } diff --git a/mothur b/mothur index 6347591..2578194 100755 Binary files a/mothur and b/mothur differ