Make sure we always use the same name for the semaphore (spotted by
Ben A L Jemmett).
diff --git a/dlls/advapi32/service.c b/dlls/advapi32/service.c
index 9f5b8cf..d0b3cdc 100644
--- a/dlls/advapi32/service.c
+++ b/dlls/advapi32/service.c
@@ -37,6 +37,10 @@
static DWORD start_dwNumServiceArgs;
static LPWSTR *start_lpServiceArgVectors;
+static const WCHAR _ServiceStartDataW[] = {'A','D','V','A','P','I','_','S',
+ 'e','r','v','i','c','e','S','t',
+ 'a','r','t','D','a','t','a',0};
+
/******************************************************************************
* EnumServicesStatusA [ADVAPI32.@]
*/
@@ -81,7 +85,7 @@
int i;
TRACE("(%p)\n", servent);
- wait = OpenSemaphoreA(SEMAPHORE_ALL_ACCESS, FALSE, "ADVAPI32_ServiceStartData");
+ wait = OpenSemaphoreW(SEMAPHORE_ALL_ACCESS, FALSE, _ServiceStartDataW);
if(wait == 0)
{
ERR("Couldn't find wait semaphore\n");
@@ -135,9 +139,6 @@
BOOL WINAPI
StartServiceCtrlDispatcherW( LPSERVICE_TABLE_ENTRYW servent )
{
- static const WCHAR _ServiceStartDataW[] = {'A','D','V','A','P','I','_','S',
- 'e','r','v','i','c','e','S','t',
- 'a','r','t','D','a','t','a',0};
LPSERVICE_MAIN_FUNCTIONW fpMain;
HANDLE wait;
DWORD dwNumServiceArgs ;
@@ -608,10 +609,6 @@
StartServiceW( SC_HANDLE hService, DWORD dwNumServiceArgs,
LPCWSTR *lpServiceArgVectors )
{
- static const WCHAR _ServiceStartDataW[] = {'A','D','V','A','P','I','_','S',
- 'e','r','v','i','c','e','S','t',
- 'a','r','t','D','a','t','a',0};
-
static const WCHAR _WaitServiceStartW[] = {'A','D','V','A','P','I','_','W',
'a','i','t','S','e','r','v','i',
'c','e','S','t','a','r','t',0};
@@ -637,21 +634,14 @@
data = CreateSemaphoreW(NULL,1,1,_ServiceStartDataW);
if (!data)
{
- data = OpenSemaphoreW(SEMAPHORE_ALL_ACCESS, FALSE, _ServiceStartDataW);
- if(data == 0)
- {
- ERR("Couldn't create data semaphore\n");
- return FALSE;
- }
+ ERR("Couldn't create data semaphore\n");
+ return FALSE;
}
wait = CreateSemaphoreW(NULL,0,1,_WaitServiceStartW);
+ if (!wait)
{
- wait = OpenSemaphoreW(SEMAPHORE_ALL_ACCESS, FALSE, _ServiceStartDataW);
- if(wait == 0)
- {
- ERR("Couldn't create wait semaphore\n");
- return FALSE;
- }
+ ERR("Couldn't create wait semaphore\n");
+ return FALSE;
}
/*