@@ -78,7 +78,7 @@ Clustering::Clustering(const std::string &seqDB, const std::string &seqDBIndex,
7878 }
7979 unsigned int sourceLen = maxsetkey + 1 ;
8080 seqnum = setToLength.size ();
81- sourceList = new (std::nothrow) unsigned int [lastKey];
81+ sourceList = new (std::nothrow) unsigned int [lastKey + 1 ];
8282 sourceOffsets = new (std::nothrow) size_t [sourceLen + 1 ]();
8383 sourceLookupTable = new (std::nothrow) unsigned int *[sourceLen];
8484 size_t * sourceOffsetsDecrease = new (std::nothrow) size_t [sourceLen + 1 ]();
@@ -94,7 +94,7 @@ Clustering::Clustering(const std::string &seqDB, const std::string &seqDBIndex,
9494 sourceOffsetsDecrease[setkey]++;
9595 }
9696 AlignmentSymmetry::computeOffsetFromCounts (sourceOffsets, sourceLen);
97- AlignmentSymmetry::setupPointers<unsigned int >(sourceList, sourceLookupTable, sourceOffsets, sourceLen, lastKey);
97+ AlignmentSymmetry::setupPointers<unsigned int >(sourceList, sourceLookupTable, sourceOffsets, sourceLen, lastKey + 1 );
9898
9999 mappingStream.close ();
100100 mappingStream.open (seqDB + " .lookup" );
@@ -156,6 +156,8 @@ Clustering::Clustering(const std::string &seqDB, const std::string &seqDBIndex,
156156 for (auto * ptr : indexStorage) {
157157 delete ptr;
158158 }
159+ delete[] sourceOffsetsDecrease;
160+ delete originalseqDbr;
159161 }
160162 }
161163
@@ -166,9 +168,9 @@ Clustering::~Clustering() {
166168 delete seqDbr;
167169 delete alnDbr;
168170 if (needSET){
169- delete keyToSet;
170- delete sourceOffsets;
171- delete sourceList;
171+ delete[] keyToSet;
172+ delete[] sourceOffsets;
173+ delete[] sourceList;
172174 delete[] sourceLookupTable;
173175 }
174176}
0 commit comments