aboutsummaryrefslogtreecommitdiff
path: root/src/shared/Database/SqlOperations.h
diff options
context:
space:
mode:
authorMachiavelli <none@none>2010-05-26 19:19:06 +0200
committerMachiavelli <none@none>2010-05-26 19:19:06 +0200
commit7c0f140bb063e587baa4ca58aa0a2c77eff6a91f (patch)
treea680897544cb58c18cbd101131c136e7b203653e /src/shared/Database/SqlOperations.h
parent6da6879effad0e7b86c908fe01f14b8448da6db1 (diff)
Use ´manual´ ACE_Thread_Mutex objects in SQLTransaction class instead of using ACE_Based::LockedQueue.
This will either result in a crash fix caused by underlying operations of ACE_Based::LockedQueue, or at least give us a clearer view at where the crash is coming from. --HG-- branch : trunk
Diffstat (limited to 'src/shared/Database/SqlOperations.h')
-rw-r--r--src/shared/Database/SqlOperations.h13
1 files changed, 10 insertions, 3 deletions
diff --git a/src/shared/Database/SqlOperations.h b/src/shared/Database/SqlOperations.h
index dcdada9cb59..f2e09c0c921 100644
--- a/src/shared/Database/SqlOperations.h
+++ b/src/shared/Database/SqlOperations.h
@@ -57,12 +57,19 @@ class SqlStatement : public SqlOperation
class SqlTransaction : public SqlOperation
{
- typedef ACE_Based::LockedQueue<const char *, ACE_Thread_Mutex> LockedQueue;
private:
- LockedQueue m_queue;
+ std::queue<const char*> m_queue;
+ ACE_Thread_Mutex m_Mutex;
public:
SqlTransaction() {}
- void DelayExecute(const char *sql) { m_queue.add(strdup(sql)); }
+ void DelayExecute(const char *sql)
+ {
+ m_Mutex.acquire();
+ char* _sql = strdup(sql);
+ if (_sql)
+ m_queue.push(_sql);
+ m_Mutex.release();
+ }
void Execute(Database *db);
};