Fix over-poping and only push the core once

master
ShadowNinja 2014-05-30 19:38:11 -04:00
parent e7706593c6
commit 5bd2aea663
1 changed files with 11 additions and 8 deletions

View File

@ -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;
}