Commit 8484d3fb authored by Alexander Yaworsky's avatar Alexander Yaworsky Committed by Alexandre Julliard

Proper finalization in StartServiceW.

parent 0e74f851
...@@ -876,6 +876,8 @@ StartServiceW( SC_HANDLE hService, DWORD dwNumServiceArgs, ...@@ -876,6 +876,8 @@ StartServiceW( SC_HANDLE hService, DWORD dwNumServiceArgs,
HANDLE data,wait; HANDLE data,wait;
PROCESS_INFORMATION procinfo; PROCESS_INFORMATION procinfo;
STARTUPINFOW startupinfo; STARTUPINFOW startupinfo;
BOOL ret = FALSE;
TRACE("(%p,%ld,%p)\n",hService,dwNumServiceArgs, TRACE("(%p,%ld,%p)\n",hService,dwNumServiceArgs,
lpServiceArgVectors); lpServiceArgVectors);
...@@ -934,19 +936,27 @@ StartServiceW( SC_HANDLE hService, DWORD dwNumServiceArgs, ...@@ -934,19 +936,27 @@ StartServiceW( SC_HANDLE hService, DWORD dwNumServiceArgs,
if(r == FALSE) if(r == FALSE)
{ {
ERR("Couldn't start process\n"); ERR("Couldn't start process\n");
/* ReleaseSemaphore(data, 1, NULL); goto done;
return FALSE; */
} }
CloseHandle( procinfo.hThread );
/* docs for StartServiceCtrlDispatcher say this should be 30 sec */ /* docs for StartServiceCtrlDispatcher say this should be 30 sec */
r = WaitForSingleObject(wait,30000); r = WaitForSingleObject(wait,30000);
if( WAIT_FAILED == r )
{
CloseHandle( procinfo.hProcess );
goto done;
}
ReleaseSemaphore(data, 1, NULL); /* allright */
CloseHandle( procinfo.hProcess );
if( r == WAIT_FAILED) ret = TRUE;
return FALSE;
return TRUE; done:
CloseHandle( wait );
ReleaseSemaphore(data, 1, NULL);
CloseHandle( data );
return ret;
} }
/****************************************************************************** /******************************************************************************
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment