From: Paul Gofman pgofman@codeweavers.com
--- dlls/dbghelp/module.c | 9 +++++++++ 1 file changed, 9 insertions(+)
diff --git a/dlls/dbghelp/module.c b/dlls/dbghelp/module.c index 3f009b6b1ef..6d2f9d5a12c 100644 --- a/dlls/dbghelp/module.c +++ b/dlls/dbghelp/module.c @@ -1280,6 +1280,7 @@ BOOL WINAPI EnumerateLoadedModulesW64(HANDLE process, PENUMLOADED_MODULES_CALLBACKW64 enum_cb, PVOID user) { + OBJECT_BASIC_INFORMATION obi; HMODULE* hmods; unsigned alloc = 256, count, count32, i; USHORT pcs_machine, native_machine; @@ -1290,6 +1291,14 @@ BOOL WINAPI EnumerateLoadedModulesW64(HANDLE process, WCHAR* wowdir = NULL; size_t sysdir_len = 0, wowdir_len = 0;
+ if (process != GetCurrentProcess() && GetCurrentProcessId() == GetProcessId(process) + && !NtQueryObject(process, ObjectBasicInformation, &obi, sizeof(obi), NULL) + && obi.GrantedAccess & PROCESS_VM_READ) + { + TRACE("same process.\n"); + process = GetCurrentProcess(); + } + /* process might not be a handle to a live process */ if (!IsWow64Process2(process, &pcs_machine, &native_machine)) {