From: Nikolay Sivov Subject: [PATCH] svchost: Simplify error handling, fix trace message Message-Id: <1397589649.694.2.camel@laptop> Date: Tue, 15 Apr 2014 23:20:49 +0400 Currently trace message is a bit misleading regarding group name: --- 003e:trace:svchost:LoadGroup Loading service group for L"netsvcs" 003e:trace:svchost:GetRegValue 003e:trace:svchost:StartGroupServices Service group L"BITS" contains 3 services 003e:trace:svchost:AddServiceElem Adding element for L"BITS" ... 003e:trace:svchost:AddServiceElem Adding element for L"fontcache" ... 003e:trace:svchost:AddServiceElem Adding element for L"Schedule" --- "BITS" is obviously not a group, but a first service name in a list. --- programs/svchost/svchost.c | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/programs/svchost/svchost.c b/programs/svchost/svchost.c index 573a6a3..8713b4a 100644 --- a/programs/svchost/svchost.c +++ b/programs/svchost/svchost.c @@ -254,6 +254,7 @@ static BOOL StartGroupServices(LPWSTR services) LPWSTR service_name = NULL; SERVICE_TABLE_ENTRYW *service_table = NULL; DWORD service_count; + BOOL ret; /* Count the services to load */ service_count = 0; @@ -264,8 +265,7 @@ static BOOL StartGroupServices(LPWSTR services) service_name = service_name + lstrlenW(service_name); ++service_name; } - WINE_TRACE("Service group %s contains %d services\n", - wine_dbgstr_w(services), service_count); + WINE_TRACE("Service group contains %d services\n", service_count); /* Populate the service table */ service_table = HeapAlloc(GetProcessHeap(), 0, @@ -287,15 +287,12 @@ static BOOL StartGroupServices(LPWSTR services) service_table[service_count].lpServiceProc = NULL; /* Start the services */ - if (!StartServiceCtrlDispatcherW(service_table)) - { + if (!(ret = StartServiceCtrlDispatcherW(service_table))) WINE_ERR("StartServiceCtrlDispatcherW failed to start %s: %u\n", wine_dbgstr_w(services), GetLastError()); - HeapFree(GetProcessHeap(), 0, service_table); - return FALSE; - } + HeapFree(GetProcessHeap(), 0, service_table); - return TRUE; + return ret; } /* Find the list of services associated with a group name and start those @@ -327,14 +324,11 @@ static BOOL LoadGroup(PWCHAR group_name) } /* Start services */ - if (StartGroupServices(services) == FALSE) - { + if (!(ret = StartGroupServices(services))) WINE_TRACE("Failed to start service group\n"); - HeapFree(GetProcessHeap(), 0, services); - return FALSE; - } + HeapFree(GetProcessHeap(), 0, services); - return TRUE; + return ret; } /* Load svchost group specified on the command line via the /k option */