From b5a2dfa93ed053b5e1e04f6a3b76735126c1e00f Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Tue, 3 Jan 2023 03:57:51 +0800 Subject: [PATCH] replay: only keep one init_data in merged events (#26863) don't merge init_data --- tools/replay/replay.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/tools/replay/replay.cc b/tools/replay/replay.cc index a01371abe1..998c93b938 100644 --- a/tools/replay/replay.cc +++ b/tools/replay/replay.cc @@ -269,8 +269,12 @@ void Replay::mergeSegments(const SegmentMap::iterator &begin, const SegmentMap:: new_events_->reserve(new_events_size); for (int n : segments_need_merge) { const auto &e = segments_[n]->log->events; - auto middle = new_events_->insert(new_events_->end(), e.begin(), e.end()); - std::inplace_merge(new_events_->begin(), middle, new_events_->end(), Event::lessThan()); + if (e.size() > 0) { + auto insert_from = e.begin(); + if (new_events_->size() > 0 && (*insert_from)->which == cereal::Event::Which::INIT_DATA) ++insert_from; + auto middle = new_events_->insert(new_events_->end(), insert_from, e.end()); + std::inplace_merge(new_events_->begin(), middle, new_events_->end(), Event::lessThan()); + } } updateEvents([&]() {