Author: cwittich
Date: Fri Feb 6 02:51:20 2009
New Revision: 39433
URL:
http://svn.reactos.org/svn/reactos?rev=39433&view=rev
Log:
fix some QueryServiceConfig2A winetests
Modified:
trunk/reactos/base/system/services/rpcserver.c
Modified: trunk/reactos/base/system/services/rpcserver.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/system/services/rpcse…
==============================================================================
--- trunk/reactos/base/system/services/rpcserver.c [iso-8859-1] (original)
+++ trunk/reactos/base/system/services/rpcserver.c [iso-8859-1] Fri Feb 6 02:51:20 2009
@@ -4209,7 +4209,6 @@
PSERVICE_HANDLE hSvc;
PSERVICE lpService = NULL;
HKEY hServiceKey = NULL;
- DWORD dwRequiredSize;
LPWSTR lpDescriptionW = NULL;
LPSTR lpDescription = NULL;
@@ -4255,39 +4254,42 @@
LPSERVICE_DESCRIPTIONA lpServiceDescription = (LPSERVICE_DESCRIPTIONA)lpBuffer;
LPSTR lpStr;
+ *pcbBytesNeeded = sizeof(SERVICE_DESCRIPTIONA);
+
dwError = ScmReadString(hServiceKey,
L"Description",
&lpDescriptionW);
- if (dwError != ERROR_SUCCESS)
- {
- if (cbBufSize < sizeof(SERVICE_DESCRIPTIONA))
+ if (dwError == ERROR_SUCCESS)
+ {
+ *pcbBytesNeeded += ((wcslen(lpDescriptionW) + 1));
+ }
+
+ if (cbBufSize >= *pcbBytesNeeded)
+ {
+
+ if (dwError == ERROR_SUCCESS)
{
- *pcbBytesNeeded = sizeof(SERVICE_DESCRIPTIONA);
- dwError = ERROR_INSUFFICIENT_BUFFER;
+ lpStr = (LPSTR)(lpServiceDescription + 1);
+
+ WideCharToMultiByte(CP_ACP,
+ 0,
+ lpDescriptionW,
+ -1,
+ lpStr,
+ wcslen(lpDescriptionW),
+ NULL,
+ NULL);
+ lpServiceDescription->lpDescription = (LPSTR)((ULONG_PTR)lpStr -
(ULONG_PTR)lpServiceDescription);
}
- goto done;
- }
-
- dwRequiredSize = sizeof(SERVICE_DESCRIPTIONA) + ((wcslen(lpDescriptionW) + 1));
-
- if (cbBufSize < dwRequiredSize)
- {
- *pcbBytesNeeded = dwRequiredSize;
+ else
+ {
+ lpServiceDescription->lpDescription = NULL;
+ }
+ }
+ else
+ {
dwError = ERROR_INSUFFICIENT_BUFFER;
- goto done;
- }
-
- lpStr = (LPSTR)(lpServiceDescription + 1);
-
- WideCharToMultiByte(CP_ACP,
- 0,
- lpDescriptionW,
- -1,
- lpStr,
- wcslen(lpDescriptionW),
- NULL,
- NULL);
- lpServiceDescription->lpDescription = (LPSTR)((ULONG_PTR)lpStr -
(ULONG_PTR)lpServiceDescription);
+ }
}
else if (dwInfoLevel & SERVICE_CONFIG_FAILURE_ACTIONS)
{