From 293ea07a2504a3c0f462b36930bbee6bdc99fe4a Mon Sep 17 00:00:00 2001 From: n0n4m3 Date: Wed, 10 Feb 2010 16:04:48 +0300 Subject: Revert revision: 053bfe8ad9, this cause some crash. Use dynamic_cast more is safer. I think no more crash on db code. --HG-- branch : trunk --- src/shared/Database/SqlOperations.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/shared/Database/SqlOperations.cpp') 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(sql)); db->DirectExecute("ROLLBACK"); - while(m_queue.next(sql)) + while(!m_queue.empty()) { - free((void*)const_cast(sql)); + free((void*)const_cast(m_queue.front())); + m_queue.pop(); } return; } -- cgit v1.2.3