aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/shared/Database/Database.cpp2
-rw-r--r--src/shared/Database/SqlOperations.h17
2 files changed, 14 insertions, 5 deletions
diff --git a/src/shared/Database/Database.cpp b/src/shared/Database/Database.cpp
index d03f8704896..40ab58fa621 100644
--- a/src/shared/Database/Database.cpp
+++ b/src/shared/Database/Database.cpp
@@ -591,6 +591,7 @@ bool Database::CommitTransaction()
if (i != m_tranQueues.end() && i->second != NULL)
{
m_threadBody->Delay(i->second);
+ m_tranQueues.erase(i);
return true;
}
else
@@ -620,6 +621,7 @@ bool Database::RollbackTransaction()
{
delete i->second;
i->second = NULL;
+ m_tranQueues.erase(i);
}
return true;
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;