diff options
Diffstat (limited to 'src/script')
-rw-r--r-- | src/script/cpp_api/s_async.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/script/cpp_api/s_async.cpp b/src/script/cpp_api/s_async.cpp index 0b19572c2..ef84d5037 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; } |