diff --git a/src/common/platform/kernel_mapped.hpp b/src/common/platform/kernel_mapped.hpp index b1d2b714..bd416403 100644 --- a/src/common/platform/kernel_mapped.hpp +++ b/src/common/platform/kernel_mapped.hpp @@ -586,10 +586,10 @@ typedef struct _PEB64 ULONG NtGlobalFlag; ULARGE_INTEGER CriticalSectionTimeout; - EMULATOR_CAST(std::int64_t, SIZE_T) HeapSegmentReserve; - EMULATOR_CAST(std::int64_t, SIZE_T) HeapSegmentCommit; - EMULATOR_CAST(std::int64_t, SIZE_T) HeapDeCommitTotalFreeThreshold; - EMULATOR_CAST(std::int64_t, SIZE_T) HeapDeCommitFreeBlockThreshold; + EMULATOR_CAST(std::uint64_t, SIZE_T) HeapSegmentReserve; + EMULATOR_CAST(std::uint64_t, SIZE_T) HeapSegmentCommit; + EMULATOR_CAST(std::uint64_t, SIZE_T) HeapDeCommitTotalFreeThreshold; + EMULATOR_CAST(std::uint64_t, SIZE_T) HeapDeCommitFreeBlockThreshold; ULONG NumberOfHeaps; ULONG MaximumNumberOfHeaps; diff --git a/src/windows-emulator/process_context.cpp b/src/windows-emulator/process_context.cpp index ed761c71..eb911eeb 100644 --- a/src/windows-emulator/process_context.cpp +++ b/src/windows-emulator/process_context.cpp @@ -266,8 +266,8 @@ void process_context::setup(x86_64_emulator& emu, memory_manager& memory, regist p.ProcessHeap = 0; p.ProcessHeaps = 0; - p.HeapSegmentReserve = 0x0000000000100000; // TODO: Read from executable - p.HeapSegmentCommit = 0x0000000000002000; + p.HeapSegmentReserve = executable.size_of_heap_reserve; + p.HeapSegmentCommit = executable.size_of_heap_commit; p.HeapDeCommitTotalFreeThreshold = 0x0000000000010000; p.HeapDeCommitFreeBlockThreshold = 0x0000000000001000; p.NumberOfHeaps = 0x00000000; @@ -357,8 +357,8 @@ void process_context::setup(x86_64_emulator& emu, memory_manager& memory, regist // Copy similar settings from PEB64 p32.ProcessHeap = 0; p32.ProcessHeaps = 0; - p32.HeapSegmentReserve = 0x00100000; - p32.HeapSegmentCommit = 0x00002000; + p32.HeapSegmentReserve = static_cast(executable.size_of_heap_reserve); + p32.HeapSegmentCommit = static_cast(executable.size_of_heap_commit); p32.HeapDeCommitTotalFreeThreshold = 0x00010000; p32.HeapDeCommitFreeBlockThreshold = 0x00001000; p32.NumberOfHeaps = 0;