From 3e3a853a89a0de6d1e5d65fea5baa1458d0cb4c2 Mon Sep 17 00:00:00 2001 From: Thomas Goyne Date: Sat, 10 Mar 2012 02:16:38 +0000 Subject: [PATCH] Fix iterator increment after erase in VisualToolDrag Originally committed to SVN as r6561. --- aegisub/src/visual_tool_drag.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/aegisub/src/visual_tool_drag.cpp b/aegisub/src/visual_tool_drag.cpp index 3a845d5af..676f568b2 100644 --- a/aegisub/src/visual_tool_drag.cpp +++ b/aegisub/src/visual_tool_drag.cpp @@ -157,15 +157,17 @@ void VisualToolDrag::OnSelectedSetChanged(const Selection &added, const Selectio c->selectionController->GetSelectedSet(selection); bool any_changed = false; - for (feature_iterator it = features.begin(); it != features.end(); ++it) { + for (feature_iterator it = features.begin(); it != features.end(); ) { if (removed.count(it->line)) { - sel_features.erase(it); + sel_features.erase(it++); any_changed = true; } else if (added.count(it->line) && it->type == DRAG_START && !sel_features.count(it->parent)) { - sel_features.insert(it); + sel_features.insert(it++); any_changed = true; } + else + ++it; } if (any_changed)