diff options
author | Machiavelli <none@none> | 2010-05-13 17:24:54 +0200 |
---|---|---|
committer | Machiavelli <none@none> | 2010-05-13 17:24:54 +0200 |
commit | 144a1468108c553f7f92f2d72511baadea0c7c28 (patch) | |
tree | f08ba886f7d9229dc2955ffb4aaee076a244ef6f /src/shared/Database/SqlOperations.h | |
parent | 28bbc233d11f16424d3bb65b95e80d6d75353456 (diff) |
Fix crash introduced in 4610bbf047.
- Update SqlAsyncTask´s destructor, properly NULLpoint SqlOperation* m_op so other threads can deal with it accordingly.
- Don´t keep NULL´d elements in transaction queues, remove them instead.
This now means you should be able to run a stable server with > 2 MapUpdate threads. Please leave feedback.
Courtesy of click and myself.
--HG--
branch : trunk
Diffstat (limited to 'src/shared/Database/SqlOperations.h')
-rw-r--r-- | src/shared/Database/SqlOperations.h | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/shared/Database/SqlOperations.h b/src/shared/Database/SqlOperations.h index d450a816c4e..0a54af70ffb 100644 --- a/src/shared/Database/SqlOperations.h +++ b/src/shared/Database/SqlOperations.h @@ -125,21 +125,28 @@ class SqlQueryHolderEx : public SqlOperation class SqlAsyncTask : public ACE_Method_Request { public: - SqlAsyncTask(Database * db, SqlOperation * op) : m_db(db), m_op(op) {} - ~SqlAsyncTask() { if(!m_op) return; delete m_op; } + SqlAsyncTask(Database * db, SqlOperation * op) : m_db(db), m_op(op){} + ~SqlAsyncTask() + { + if (!m_op) + return; + + delete m_op; + m_op = NULL; + } int call() { - if(m_db == NULL || m_op == NULL) + if (m_db == NULL || m_op == NULL) return -1; try { - m_op->Execute(m_db); + m_op->Execute(m_db); } catch(...) { - return -1; + return -1; } return 0; |