Sebastian Lackner : services: Initialize environment block immediately after startup.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Apr 15 10:00:24 CDT 2016
Module: wine
Branch: master
Commit: ce07a77610dec0f273912425dc68fc646a7f3624
URL: http://source.winehq.org/git/wine.git/?a=commit;h=ce07a77610dec0f273912425dc68fc646a7f3624
Author: Sebastian Lackner <sebastian at fds-team.de>
Date: Fri Apr 15 10:03:52 2016 +0200
services: Initialize environment block immediately after startup.
Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
programs/services/services.c | 22 +++++++++++-----------
1 file changed, 11 insertions(+), 11 deletions(-)
diff --git a/programs/services/services.c b/programs/services/services.c
index 8f53e7e..0f8615f 100644
--- a/programs/services/services.c
+++ b/programs/services/services.c
@@ -724,17 +724,6 @@ static DWORD service_start_process(struct service_entry *service_entry)
service_lock(service_entry);
- if (!env)
- {
- HANDLE htok;
-
- if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY|TOKEN_DUPLICATE, &htok))
- CreateEnvironmentBlock(&env, htok, FALSE);
-
- if (!env)
- WINE_ERR("failed to create services environment\n");
- }
-
if ((err = get_service_binary_path(service_entry, &path)))
{
service_unlock(service_entry);
@@ -976,9 +965,20 @@ static void load_registry_parameters(void)
int main(int argc, char *argv[])
{
static const WCHAR svcctl_started_event[] = SVCCTL_STARTED_EVENT;
+ HANDLE htok;
DWORD err;
g_hStartedEvent = CreateEventW(NULL, TRUE, FALSE, svcctl_started_event);
+
+ if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY|TOKEN_DUPLICATE, &htok))
+ {
+ CreateEnvironmentBlock(&env, htok, FALSE);
+ CloseHandle(htok);
+ }
+
+ if (!env)
+ WINE_ERR("failed to create services environment\n");
+
load_registry_parameters();
err = scmdatabase_create(&active_database);
if (err != ERROR_SUCCESS)
More information about the wine-cvs
mailing list