From 381b708202e87e40347a57f8a627014199cde266 Mon Sep 17 00:00:00 2001 From: "Igor V. Kovalenko" Date: Sat, 26 Dec 2020 22:39:49 +0300 Subject: [PATCH] mainwindow: do not erase from container while iterating Part-of: --- src/mainwindow.cc | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/mainwindow.cc b/src/mainwindow.cc index d36cf57..f9cd16e 100644 --- a/src/mainwindow.cc +++ b/src/mainwindow.cc @@ -1260,18 +1260,18 @@ void MainWindow::removeClient(uint32_t index) { } void MainWindow::removeAllWidgets() { - for (std::map::iterator it = sinkInputWidgets.begin(); it != sinkInputWidgets.end(); ++it) - removeSinkInput(it->first); - for (std::map::iterator it = sourceOutputWidgets.begin(); it != sourceOutputWidgets.end(); ++it) - removeSourceOutput(it->first); - for (std::map::iterator it = sinkWidgets.begin(); it != sinkWidgets.end(); ++it) - removeSink(it->first); - for (std::map::iterator it = sourceWidgets.begin(); it != sourceWidgets.end(); ++it) - removeSource(it->first); - for (std::map::iterator it = cardWidgets.begin(); it != cardWidgets.end(); ++it) - removeCard(it->first); - for (std::map::iterator it = clientNames.begin(); it != clientNames.end(); ++it) - removeClient(it->first); + while (!sinkInputWidgets.empty()) + removeSinkInput(sinkInputWidgets.begin()->first); + while (!sourceOutputWidgets.empty()) + removeSourceOutput(sourceOutputWidgets.begin()->first); + while (!sinkWidgets.empty()) + removeSink(sinkWidgets.begin()->first); + while (!sourceWidgets.empty()) + removeSource(sourceWidgets.begin()->first); + while (!cardWidgets.empty()) + removeCard(cardWidgets.begin()->first); + while (!clientNames.empty()) + removeClient(clientNames.begin()->first); deleteEventRoleWidget(); }