aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2014-07-26 16:10:05 +0200
committerShauren <shauren.trinity@gmail.com>2014-07-26 16:10:05 +0200
commit6961f957c9d03bff634f0b75466458564845722e (patch)
tree0518c44e310d881e5c240b9373d9be5fe6bf919b /src/server/shared
parenta03c8795659ff1f259fcb1ba324bf2b796108e8e (diff)
Core/DBLayer: Fixed possible crashes with async queries retrieving result
Closes #12655
Diffstat (limited to 'src/server/shared')
-rw-r--r--src/server/shared/Database/DatabaseWorkerPool.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/server/shared/Database/DatabaseWorkerPool.h b/src/server/shared/Database/DatabaseWorkerPool.h
index a1ee6407fea..a43d4c9c683 100644
--- a/src/server/shared/Database/DatabaseWorkerPool.h
+++ b/src/server/shared/Database/DatabaseWorkerPool.h
@@ -297,8 +297,9 @@ class DatabaseWorkerPool
QueryResultFuture AsyncQuery(const char* sql)
{
BasicStatementTask* task = new BasicStatementTask(sql, true);
+ QueryResultFuture result = task->GetFuture();
Enqueue(task);
- return task->GetFuture(); //! Actual return value has no use yet
+ return result; //! Actual return value has no use yet
}
//! Enqueues a query in string format -with variable args- that will set the value of the QueryResultFuture return object as soon as the query is executed.
@@ -320,8 +321,9 @@ class DatabaseWorkerPool
PreparedQueryResultFuture AsyncQuery(PreparedStatement* stmt)
{
PreparedStatementTask* task = new PreparedStatementTask(stmt, true);
+ PreparedQueryResultFuture result = task->GetFuture();
Enqueue(task);
- return task->GetFuture();
+ return result;
}
//! Enqueues a vector of SQL operations (can be both adhoc and prepared) that will set the value of the QueryResultHolderFuture
@@ -331,8 +333,9 @@ class DatabaseWorkerPool
QueryResultHolderFuture DelayQueryHolder(SQLQueryHolder* holder)
{
SQLQueryHolderTask* task = new SQLQueryHolderTask(holder);
+ QueryResultHolderFuture result = task->GetFuture();
Enqueue(task);
- return task->GetFuture();
+ return result;
}
/**