diff options
author | n0n4m3 <none@none> | 2010-02-10 16:04:48 +0300 |
---|---|---|
committer | n0n4m3 <none@none> | 2010-02-10 16:04:48 +0300 |
commit | 293ea07a2504a3c0f462b36930bbee6bdc99fe4a (patch) | |
tree | fe7471db8af5475f9e4c86f64130a0cb6d0ce130 /src/shared/Database/SqlOperations.cpp | |
parent | 1e4684826e2e5dac2ebb660b2043d80973c4a266 (diff) |
Revert revision: 053bfe8ad9, this cause some crash.
Use dynamic_cast more is safer.
I think no more crash on db code.
--HG--
branch : trunk
Diffstat (limited to 'src/shared/Database/SqlOperations.cpp')
-rw-r--r-- | src/shared/Database/SqlOperations.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/shared/Database/SqlOperations.cpp b/src/shared/Database/SqlOperations.cpp index d657c667913..d97e778f6d1 100644 --- a/src/shared/Database/SqlOperations.cpp +++ b/src/shared/Database/SqlOperations.cpp @@ -33,17 +33,23 @@ void SqlStatement::Execute(Database *db) void SqlTransaction::Execute(Database *db) { - const char *sql; + if (m_queue.empty()) + return; + db->DirectExecute("START TRANSACTION"); - while(m_queue.next(sql)) + while(!m_queue.empty()) { + char const *sql = m_queue.front(); + m_queue.pop(); + if(!db->DirectExecute(sql)) { free((void*)const_cast<char*>(sql)); db->DirectExecute("ROLLBACK"); - while(m_queue.next(sql)) + while(!m_queue.empty()) { - free((void*)const_cast<char*>(sql)); + free((void*)const_cast<char*>(m_queue.front())); + m_queue.pop(); } return; } |