diff --git a/src/windows-emulator/process_context.hpp b/src/windows-emulator/process_context.hpp index a21ac6da..567a9d00 100644 --- a/src/windows-emulator/process_context.hpp +++ b/src/windows-emulator/process_context.hpp @@ -347,7 +347,7 @@ class moved_marker bool was_moved_{false}; }; -class emulator_thread : ref_counted_object +class emulator_thread : public ref_counted_object { public: emulator_thread(x64_emulator& emu) diff --git a/src/windows-emulator/syscalls.cpp b/src/windows-emulator/syscalls.cpp index 7dafe4ef..e97e51fb 100644 --- a/src/windows-emulator/syscalls.cpp +++ b/src/windows-emulator/syscalls.cpp @@ -3519,10 +3519,11 @@ namespace } bool return_next_thread = thread_handle == NULL_HANDLE; - for (const auto& t : c.proc.threads) + for (auto& t : c.proc.threads) { if (return_next_thread && !t.second.is_terminated()) { + ++t.second.ref_count; new_thread_handle.write(c.proc.threads.make_handle(t.first)); return STATUS_SUCCESS; }