From 754a2d1380c19e854549b84af6f96e94aef0d77f Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 9 Aug 2008 19:05:54 +0000 Subject: [PATCH] (w32_system_process_attributes): If the process does not exist, return nil. --- src/ChangeLog | 3 +++ src/w32.c | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index 7fdffb7df38..37a405efb5c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,8 @@ 2008-08-09 Eli Zaretskii + * w32.c (w32_system_process_attributes): If the process does not + exist, return nil. + * w32.c: Include thelp32.h, psapi.h and coding.h. (_MEMORYSTATUSEX, _PROCESS_MEMORY_COUNTERS_EX): New struct declarations. diff --git a/src/w32.c b/src/w32.c index 1d3c5182912..2407cb171be 100644 --- a/src/w32.c +++ b/src/w32.c @@ -3642,6 +3642,7 @@ w32_system_process_attributes (pid) Lisp_Object cmd_str, decoded_cmd, tem; HANDLE h_snapshot, h_proc; DWORD proc_id; + int found_proc = 0; char uname[UNLEN+1], gname[GNLEN+1], domain[1025]; DWORD ulength = sizeof (uname), dlength = sizeof (domain), trash; DWORD glength = sizeof (gname); @@ -3701,6 +3702,7 @@ w32_system_process_attributes (pid) attrs = Fcons (Fcons (Qthcount, make_fixnum_or_float (pe.cntThreads)), attrs); + found_proc = 1; break; } } @@ -3708,6 +3710,12 @@ w32_system_process_attributes (pid) CloseHandle (h_snapshot); } + if (!found_proc) + { + UNGCPRO; + return Qnil; + } + h_proc = OpenProcess (PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, proc_id); /* If we were denied a handle to the process, try again after -- 2.39.5