From 0ccac34cb0957638220d276fe20f651e62766ceb Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Thu, 12 Feb 2015 12:58:12 -0800 Subject: [PATCH] Fix crash when splitting lines by karaoke Defer the deletion of the old lines until after the commit as is now done for everything that deletes selected lines. --- src/command/edit.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/command/edit.cpp b/src/command/edit.cpp index 8d0b2b273..295690793 100644 --- a/src/command/edit.cpp +++ b/src/command/edit.cpp @@ -1052,7 +1052,7 @@ struct edit_line_split_by_karaoke final : public validate_sel_nonempty { Selection new_sel; AssKaraoke kara; - bool did_split = false; + std::vector> to_delete; for (auto line : sel) { kara.SetLine(line); @@ -1071,11 +1071,11 @@ struct edit_line_split_by_karaoke final : public validate_sel_nonempty { new_sel.insert(new_line); } - delete line; - did_split = true; + c->ass->Events.erase(c->ass->iterator_to(*line)); + to_delete.emplace_back(line); } - if (!did_split) return; + if (to_delete.empty()) return; c->ass->Commit(_("splitting"), AssFile::COMMIT_DIAG_ADDREM | AssFile::COMMIT_DIAG_FULL);