aboutsummaryrefslogtreecommitdiff
path: root/src/shared/Database/SqlOperations.cpp
diff options
context:
space:
mode:
authorn0n4m3 <none@none>2010-02-10 16:04:48 +0300
committern0n4m3 <none@none>2010-02-10 16:04:48 +0300
commit293ea07a2504a3c0f462b36930bbee6bdc99fe4a (patch)
treefe7471db8af5475f9e4c86f64130a0cb6d0ce130 /src/shared/Database/SqlOperations.cpp
parent1e4684826e2e5dac2ebb660b2043d80973c4a266 (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.cpp14
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;
}