diff --git a/tools/segmatch.cc b/tools/segmatch.cc index 5616f764..6c764247 100644 --- a/tools/segmatch.cc +++ b/tools/segmatch.cc @@ -26,6 +26,8 @@ vector bit_ids_r, tag_ids_r; typedef tuple, vector, vector> segdata_t; map segdata; +map segnamecnt; + static inline vector &segdata_bits(segdata_t &sd) { return std::get<0>(sd); } static inline vector &segdata_tags1(segdata_t &sd) { return std::get<1>(sd); } static inline vector &segdata_tags0(segdata_t &sd) { return std::get<2>(sd); } @@ -41,7 +43,15 @@ void read_input(std::istream &f, std::string filename) { f >> token; token = filename + ":" + token; - assert(segdata.count(token) == 0); + while (segdata.count(token)) { + int idx = 1; + if (segnamecnt.count(token)) + idx = segnamecnt.at(token); + segnamecnt[token] = idx + 1; + char buffer[64]; + snprintf(buffer, 64, "-%d", idx); + token += buffer; + } segptr = &segdata[token]; continue; }