From cc4064611ffb7f0d9d4459dd8885e7687276c32b Mon Sep 17 00:00:00 2001 From: Maurice Heumann Date: Tue, 4 Feb 2025 20:34:53 +0100 Subject: [PATCH] Fix thread handles --- src/windows-emulator/process_context.hpp | 2 +- src/windows-emulator/syscalls.cpp | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) 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; }