From fb68a9f9fe2db5c42e7ccd43ad48e42f4ac8b19e Mon Sep 17 00:00:00 2001 From: peri4 Date: Sun, 31 Mar 2024 20:31:35 +0300 Subject: [PATCH] another segv on cloud --- utils/cloud_dispatcher/dispatcherserver.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/utils/cloud_dispatcher/dispatcherserver.cpp b/utils/cloud_dispatcher/dispatcherserver.cpp index 33c49d66..0cee5f78 100644 --- a/utils/cloud_dispatcher/dispatcherserver.cpp +++ b/utils/cloud_dispatcher/dispatcherserver.cpp @@ -49,9 +49,12 @@ void DispatcherServer::cleanClients() { s->close(); piDeleteAllAndClear(rmrf_servers); for (auto c: rmrf_clients) { - if (!c->isPIObject()) piCout << "ACHTUNG! Non-piobject client!"; + if (!c->isPIObject()) + piCout << "ACHTUNG! Non-piobject client!"; + else + delete c; } - piDeleteAllAndClear(rmrf_clients); + rmrf_clients.clear(); for (auto c: clients) { if (!index_c_servers.contains(c) && !index_c_clients.contains(c)) { if (!rm_clients.contains(c)) rm_clients << c; @@ -65,7 +68,10 @@ void DispatcherServer::cleanClients() { c->close(); PIVector cscv = c->getClients(); for (auto csc: cscv) { - if (!csc->isPIObject()) piCout << "ACHTUNG! Non-piobject DispatcherClient!"; + if (!csc->isPIObject()) { + piCout << "ACHTUNG! Non-piobject DispatcherClient!"; + continue; + } clients.removeAll(csc); index_c_clients.remove(csc); c->removeClient(csc);