[6/6] services: Hold an additional process reference while waiting for startup.
Sebastian Lackner
sebastian at fds-team.de
Thu Aug 11 00:22:55 CDT 2016
Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
---
programs/services/services.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/programs/services/services.c b/programs/services/services.c
index b0d008d..f7a2725 100644
--- a/programs/services/services.c
+++ b/programs/services/services.c
@@ -778,7 +778,7 @@ static DWORD service_start_process(struct service_entry *service_entry, struct p
service_entry->status.dwCurrentState = SERVICE_START_PENDING;
scmdatabase_add_process(service_entry->db, process);
- service_entry->process = process;
+ service_entry->process = grab_process(process);
service_unlock(service_entry);
@@ -788,6 +788,7 @@ static DWORD service_start_process(struct service_entry *service_entry, struct p
{
err = GetLastError();
process_terminate(process);
+ release_process(process);
return err;
}
@@ -916,6 +917,8 @@ DWORD service_start(struct service_entry *service, DWORD service_argc, LPCWSTR *
ReleaseMutex(process->control_mutex);
else
process_terminate(process);
+
+ release_process(process);
}
scmdatabase_unlock_startup(service->db);
--
2.9.0
More information about the wine-patches
mailing list