aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/script/cpp_api/s_async.cpp19
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;
}