From b2d9205796eef23fd5d9a436d438fa2ca31ec21a Mon Sep 17 00:00:00 2001 From: sapier Date: Thu, 14 Nov 2013 18:30:43 +0100 Subject: Fix Result of processed Request was written to invalid (non existent) ResultQueue if requesting thread timed out before --- src/itemdef.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) (limited to 'src/itemdef.cpp') diff --git a/src/itemdef.cpp b/src/itemdef.cpp index c520ea902..d34d68582 100644 --- a/src/itemdef.cpp +++ b/src/itemdef.cpp @@ -477,21 +477,24 @@ public: else { // We're gonna ask the result to be put into here - ResultQueue result_queue; + static ResultQueue result_queue; + // Throw a request in m_get_clientcached_queue.add(name, 0, 0, &result_queue); try{ - // Wait result for a second - GetResult + while(true) { + // Wait result for a second + GetResult result = result_queue.pop_front(1000); - // Check that at least something worked OK - assert(result.key == name); - // Return it - return result.item; + + if (result.key == name) { + return result.item; + } + } } catch(ItemNotFoundException &e) { - errorstream<<"Waiting for clientcached timed out."<