[3/7] services: Initialize service ref_count directly in service_create.

Sebastian Lackner sebastian at fds-team.de
Tue Mar 15 22:30:56 CDT 2016


Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
---
 programs/services/rpc.c      |    1 -
 programs/services/services.c |    2 ++
 2 files changed, 2 insertions(+), 1 deletion(-)

diff --git a/programs/services/rpc.c b/programs/services/rpc.c
index 933f18d..cdac948 100644
--- a/programs/services/rpc.c
+++ b/programs/services/rpc.c
@@ -507,7 +507,6 @@ static DWORD create_serviceW(
         return err;
     }
 
-    entry->ref_count = 1;
     entry->is_wow64 = is_wow64;
     entry->config.dwServiceType = entry->status.dwServiceType = dwServiceType;
     entry->config.dwStartType = dwStartType;
diff --git a/programs/services/services.c b/programs/services/services.c
index 9f7e889..03df852 100644
--- a/programs/services/services.c
+++ b/programs/services/services.c
@@ -107,6 +107,7 @@ DWORD service_create(LPCWSTR name, struct service_entry **entry)
         HeapFree(GetProcessHeap(), 0, *entry);
         return err;
     }
+    (*entry)->ref_count = 1;
     (*entry)->status.dwCurrentState = SERVICE_STOPPED;
     (*entry)->status.dwWin32ExitCode = ERROR_SERVICE_NEVER_STARTED;
     (*entry)->preshutdown_timeout = default_preshutdown_timeout;
@@ -557,6 +558,7 @@ static DWORD scmdatabase_load_services(struct scmdatabase *db)
         entry->db = db;
 
         list_add_tail(&db->services, &entry->entry);
+        release_service(entry);
     }
     return ERROR_SUCCESS;
 }
-- 
2.7.1



More information about the wine-patches mailing list