aboutsummaryrefslogtreecommitdiff
path: root/src/shared/Database/SqlOperations.cpp
diff options
context:
space:
mode:
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;
}