From 5bd2aea663945d467744749579a1812f2e47bde7 Mon Sep 17 00:00:00 2001 From: ShadowNinja Date: Fri, 30 May 2014 19:38:11 -0400 Subject: [PATCH] Fix over-poping and only push the core once --- src/script/cpp_api/s_async.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/script/cpp_api/s_async.cpp b/src/script/cpp_api/s_async.cpp index 0b19572c..ef84d503 100644 --- a/src/script/cpp_api/s_async.cpp +++ b/src/script/cpp_api/s_async.cpp @@ -262,6 +262,12 @@ void* AsyncWorkerThread::Thread() abort(); } + lua_getglobal(L, "core"); + if (lua_isnil(L, -1)) { + errorstream << "Unable to find core within async environment!"; + abort(); + } + // Main loop while (!StopRequested()) { // Wait for job @@ -271,12 +277,6 @@ void* AsyncWorkerThread::Thread() continue; } - lua_getglobal(L, "core"); - if (lua_isnil(L, -1)) { - errorstream << "Unable to find core within async environment!"; - abort(); - } - lua_getfield(L, -1, "job_processor"); if (lua_isnil(L, -1)) { errorstream << "Unable to get async job processor!" << std::endl; @@ -303,13 +303,16 @@ void* AsyncWorkerThread::Thread() toProcess.serializedResult = std::string(retval, length); } - // Pop core, job_processor, and retval - lua_pop(L, 3); + lua_pop(L, 1); // Pop retval // Put job result jobDispatcher->putJobResult(toProcess); } + + lua_pop(L, 1); // Pop core + log_deregister_thread(); + return 0; } -- 2.30.2