fix potential acces violation

develop
Geoffrey Merck 4 months ago
parent c6d47cc329
commit abe1b52d18

@ -80,11 +80,12 @@ void CDCSProtocolHandlerPool::release(CDCSProtocolHandler *handler)
assert(handler != NULL);
for (auto it=m_pool.begin(); it!=m_pool.end(); it++) {
if (it->second == handler) {
unsigned int port = handler->getPort();
m_pool.erase(it);
handler->close();
delete handler ;
m_index = m_pool.end(); // since we removed an element, m_index is ouot of order, just move it back to the end
CLog::logInfo("Released DCS ProtocolHandler on port %u.\n", handler->getPort());
m_index = m_pool.end(); // since we removed an element, m_index is out of order, just move it back to the end
CLog::logInfo("Released DCS ProtocolHandler on port %u.\n", port);
return;
}

@ -80,11 +80,12 @@ void CDExtraProtocolHandlerPool::release(CDExtraProtocolHandler *handler)
assert(handler != NULL);
for (auto it=m_pool.begin(); it!=m_pool.end(); it++) {
if (it->second == handler) {
unsigned int port = handler->getPort();
m_pool.erase(it);
handler->close();
delete handler;
m_index = m_pool.end(); // m_index might be out of order, reset it
CLog::logInfo("Releasing DExtra Protocol Handler on port %u.\n", handler->getPort());
CLog::logInfo("Releasing DExtra Protocol Handler on port %u.\n", port);
return;
}

@ -81,11 +81,12 @@ void CDPlusProtocolHandlerPool::release(CDPlusProtocolHandler *handler)
assert(handler != NULL);
for (auto it=m_pool.begin(); it!=m_pool.end(); it++) {
if (it->second == handler) {
unsigned int port = handler->getPort();
m_pool.erase(it);
handler->close();
delete handler;
m_index = m_pool.end(); // m_index might be ut of order so reset it
CLog::logInfo("Releasing DPlus ProtocolHandler on port %u.\n", handler->getPort());
CLog::logInfo("Releasing DPlus ProtocolHandler on port %u.\n", port);
return;
}
}

Loading…
Cancel
Save

Powered by TurnKey Linux.