# HG changeset patch # User Chris Cannam # Date 1548342424 0 # Node ID a595de3e6f8d7fe5dbccfb0828d6169d8cf82ba4 # Parent f1717a01dd9a6cc28d523e8213a7c46d637ed405 Fix invalid call to parts.erase(parts.end()), which can crash and never does anything good. I think this is the intended behaviour. diff -r f1717a01dd9a -r a595de3e6f8d segmentino/Segmentino.cpp --- a/segmentino/Segmentino.cpp Thu Jan 24 15:06:13 2019 +0000 +++ b/segmentino/Segmentino.cpp Thu Jan 24 15:07:04 2019 +0000 @@ -1218,6 +1218,19 @@ // Merge Nulls void mergenulls(vector &parts) { +/* + cerr << "Segmentino: mergenulls: before: "<< endl; + for (int iPart=0; iPart<(int)parts.size(); ++iPart) { + cerr << parts[iPart].letter << ": "; + for (int iIndex=0; iIndex<(int)parts[iPart].indices.size(); ++iIndex) { + cerr << parts[iPart].indices[iIndex]; + if (iIndex+1 < (int)parts[iPart].indices.size()) { + cerr << ", "; + } + } + cerr << endl; + } +*/ for (int iPart=0; iPart<(int)parts.size(); ++iPart) { @@ -1258,12 +1271,27 @@ newVectorPart[newpartind].n = newVectorPart[newpartind].n+1; } } - parts.erase (parts.end()); + parts.erase (parts.begin() + iPart); for (int i=0; i<(int)newVectorPart.size(); ++i) parts.push_back(newVectorPart[i]); + + break; } } +/* + cerr << "Segmentino: mergenulls: after: "<< endl; + for (int iPart=0; iPart<(int)parts.size(); ++iPart) { + cerr << parts[iPart].letter << ": "; + for (int iIndex=0; iIndex<(int)parts[iPart].indices.size(); ++iIndex) { + cerr << parts[iPart].indices[iIndex]; + if (iIndex+1 < (int)parts[iPart].indices.size()) { + cerr << ", "; + } + } + cerr << endl; + } +*/ } /* ------ Segmentation ------ */