diff --git a/aegisub/src/mkv_wrap.cpp b/aegisub/src/mkv_wrap.cpp index 533cfa45d..91a739ea6 100644 --- a/aegisub/src/mkv_wrap.cpp +++ b/aegisub/src/mkv_wrap.cpp @@ -80,7 +80,7 @@ public: #endif static void read_subtitles(agi::ProgressSink *ps, MatroskaFile *file, MkvStdIO *input, bool srt, double totalTime, AssParser *parser) { - std::map subList; + std::vector> subList; std::string readBuf; // Load blocks @@ -105,12 +105,13 @@ static void read_subtitles(agi::ProgressSink *ps, MatroskaFile *file, MkvStdIO * std::vector> chunks; boost::split(chunks, readBuf, boost::is_any_of(",")); - subList[boost::lexical_cast(chunks[0])] = + subList.emplace_back( + boost::lexical_cast(chunks[0]), str(boost::format("Dialogue: %d,%s,%s,%s") % boost::lexical_cast(chunks[1]) % subStart.GetAssFormated() % subEnd.GetAssFormated() - % boost::make_iterator_range(begin(chunks[2]), readBuf.end())); + % boost::make_iterator_range(begin(chunks[2]), readBuf.end()))); } // Process SRT else { @@ -119,13 +120,14 @@ static void read_subtitles(agi::ProgressSink *ps, MatroskaFile *file, MkvStdIO * boost::replace_all(readBuf, "\r", "\\N"); boost::replace_all(readBuf, "\n", "\\N"); - subList[subList.size()] = readBuf; + subList.emplace_back(subList.size(), readBuf); } ps->SetProgress(startTime / timecodeScaleLow, totalTime); } // Insert into file + sort(begin(subList), end(subList)); for (auto order_value_pair : subList) parser->AddLine(order_value_pair.second); }