diff options
Diffstat (limited to 'src/server/shared/Database/Transaction.cpp')
-rwxr-xr-x | src/server/shared/Database/Transaction.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/server/shared/Database/Transaction.cpp b/src/server/shared/Database/Transaction.cpp index 8604dfc609c..73cf1e77542 100755 --- a/src/server/shared/Database/Transaction.cpp +++ b/src/server/shared/Database/Transaction.cpp @@ -24,7 +24,7 @@ void Transaction::Append(const char* sql) SQLElementData data; data.type = SQL_ELEMENT_RAW; data.element.query = strdup(sql); - m_queries.push(data); + m_queries.push_back(data); } void Transaction::PAppend(const char* sql, ...) @@ -44,14 +44,18 @@ void Transaction::Append(PreparedStatement* stmt) SQLElementData data; data.type = SQL_ELEMENT_PREPARED; data.element.stmt = stmt; - m_queries.push(data); + m_queries.push_back(data); } void Transaction::Cleanup() { + // This might be called by explicit calls to Cleanup or by the auto-destructor + if (_cleanedUp) + return; + while (!m_queries.empty()) { - SQLElementData data = m_queries.front(); + SQLElementData const &data = m_queries.front(); switch (data.type) { case SQL_ELEMENT_PREPARED: @@ -61,8 +65,11 @@ void Transaction::Cleanup() free((void*)(data.element.query)); break; } - m_queries.pop(); + + m_queries.pop_front(); } + + _cleanedUp = true; } bool TransactionTask::Execute() @@ -78,5 +85,8 @@ bool TransactionTask::Execute() return true; } + // Clean up now. + m_trans->Cleanup(); + return false; } |