From 2f4a4660d00f2d144d15a6f7d495b15796ae269a Mon Sep 17 00:00:00 2001 From: Thulinma Date: Tue, 13 Oct 2015 15:34:24 +0200 Subject: [PATCH] Fixed controller breaking when all connectors are deleted simultaneously. --- src/controller/controller_connectors.cpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/controller/controller_connectors.cpp b/src/controller/controller_connectors.cpp index 1354dfc7..d075d110 100644 --- a/src/controller/controller_connectors.cpp +++ b/src/controller/controller_connectors.cpp @@ -139,15 +139,20 @@ namespace Controller { bool action = false; //shut down deleted/changed connectors std::map::iterator it; - for (it = currentConnectors.begin(); it != currentConnectors.end(); it++){ - if (!runningConns.count(it->first)){ - if (Util::Procs::isActive(it->second)){ - Log("CONF", "Stopping connector " + it->first); - action = true; - Util::Procs::Stop(it->second); + if (currentConnectors.size()){ + for (it = currentConnectors.begin(); it != currentConnectors.end(); it++){ + if (!runningConns.count(it->first)){ + if (Util::Procs::isActive(it->second)){ + Log("CONF", "Stopping connector " + it->first); + action = true; + Util::Procs::Stop(it->second); + } + currentConnectors.erase(it); + if (!currentConnectors.size()){ + break; + } + it = currentConnectors.begin(); } - currentConnectors.erase(it); - it = currentConnectors.begin(); } }