summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrei Karas <akaras@inbox.ru>2014-07-19 18:55:24 +0300
committerAndrei Karas <akaras@inbox.ru>2014-07-19 18:55:24 +0300
commit22fe614f7a528b209fc2075cf76274fbcb780814 (patch)
tree5b46e683eef05e4088c8596bba1eb5d4d1ee6c7f
parent5a5d0398820a482a88f878638e74ccad6f2d2c50 (diff)
downloadmanaplus-22fe614f7a528b209fc2075cf76274fbcb780814.tar.gz
manaplus-22fe614f7a528b209fc2075cf76274fbcb780814.tar.bz2
manaplus-22fe614f7a528b209fc2075cf76274fbcb780814.tar.xz
manaplus-22fe614f7a528b209fc2075cf76274fbcb780814.zip
Fix memory leak with ipc port selection.
-rw-r--r--src/net/ipc.cpp10
-rw-r--r--src/net/ipc.h3
2 files changed, 10 insertions, 3 deletions
diff --git a/src/net/ipc.cpp b/src/net/ipc.cpp
index 559c65a59..96113154f 100644
--- a/src/net/ipc.cpp
+++ b/src/net/ipc.cpp
@@ -22,9 +22,11 @@
#include "logger.h"
-#include "gui/widgets/tabs/chattab.h"
#include "gui/windows/chatwindow.h"
+#include "gui/widgets/tabs/chattab.h"
+
+#include "utils/delete2.h"
#include "utils/sdlhelper.h"
#include "utils/stringutils.h"
@@ -150,18 +152,20 @@ void IPC::start()
port = atoi(getenv("IPC_PORT"));
logger->log("Starting IPC...");
+ ipc = new IPC;
for (int port = 44007; port < 65535; port ++)
{
+ ipc->setPort(port);
logger->log(" -> trying port %d...", ipc_port);
- ipc = new IPC(port);
if (ipc->init())
{
logger->log(" -> Port %d selected", ipc_port);
- break;
+ return;
}
else
{
port ++;
}
}
+ delete2(ipc);
}
diff --git a/src/net/ipc.h b/src/net/ipc.h
index b9960abce..611dba35c 100644
--- a/src/net/ipc.h
+++ b/src/net/ipc.h
@@ -49,6 +49,9 @@ public:
static void stop();
private:
+ void setPort(const unsigned short port)
+ { mPort = port; }
+
bool mListen;
unsigned int mNumReqs;
unsigned short mPort;