aboutsummaryrefslogtreecommitdiff
path: root/src/shared/Database/SqlOperations.h
diff options
context:
space:
mode:
authorMachiavelli <none@none>2010-05-13 17:24:54 +0200
committerMachiavelli <none@none>2010-05-13 17:24:54 +0200
commit144a1468108c553f7f92f2d72511baadea0c7c28 (patch)
treef08ba886f7d9229dc2955ffb4aaee076a244ef6f /src/shared/Database/SqlOperations.h
parent28bbc233d11f16424d3bb65b95e80d6d75353456 (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.h17
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;