mirror of
https://github.com/reactos/reactos.git
synced 2025-08-03 21:05:43 +00:00
[SERVICES]
ScmWriteDependencies: - Fixed an off-by-one bug. This bug caused a wrong calculation of the 'DependOnGroup' value data length. Group dependencies were not written properly to the registry. - Write 'DependOnService' and 'DependOnService' values to the registry only if the dependency strings are not empty. Delete a value if the corresponding dependency string is empty. This fixes another winetest. svn path=/trunk/; revision=51172
This commit is contained in:
parent
828d04705a
commit
4288ba6306
1 changed files with 29 additions and 13 deletions
|
@ -125,7 +125,7 @@ ScmWriteDependencies(HKEY hServiceKey,
|
||||||
lpDst = lpGroupDeps;
|
lpDst = lpGroupDeps;
|
||||||
while (*lpSrc != 0)
|
while (*lpSrc != 0)
|
||||||
{
|
{
|
||||||
dwLength = wcslen(lpSrc);
|
dwLength = wcslen(lpSrc) + 1;
|
||||||
if (*lpSrc == SC_GROUP_IDENTIFIERW)
|
if (*lpSrc == SC_GROUP_IDENTIFIERW)
|
||||||
{
|
{
|
||||||
lpSrc++;
|
lpSrc++;
|
||||||
|
@ -157,21 +157,37 @@ ScmWriteDependencies(HKEY hServiceKey,
|
||||||
*lpDst = 0;
|
*lpDst = 0;
|
||||||
dwServiceLength++;
|
dwServiceLength++;
|
||||||
|
|
||||||
dwError = RegSetValueExW(hServiceKey,
|
if (dwGroupLength > 1)
|
||||||
L"DependOnGroup",
|
{
|
||||||
0,
|
dwError = RegSetValueExW(hServiceKey,
|
||||||
REG_MULTI_SZ,
|
L"DependOnGroup",
|
||||||
(LPBYTE)lpGroupDeps,
|
0,
|
||||||
dwGroupLength * sizeof(WCHAR));
|
REG_MULTI_SZ,
|
||||||
|
(LPBYTE)lpGroupDeps,
|
||||||
|
dwGroupLength * sizeof(WCHAR));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
RegDeleteValueW(hServiceKey,
|
||||||
|
L"DependOnGroup");
|
||||||
|
}
|
||||||
|
|
||||||
if (dwError == ERROR_SUCCESS)
|
if (dwError == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
dwError = RegSetValueExW(hServiceKey,
|
if (dwServiceLength > 1)
|
||||||
L"DependOnService",
|
{
|
||||||
0,
|
dwError = RegSetValueExW(hServiceKey,
|
||||||
REG_MULTI_SZ,
|
L"DependOnService",
|
||||||
(LPBYTE)lpServiceDeps,
|
0,
|
||||||
dwServiceLength * sizeof(WCHAR));
|
REG_MULTI_SZ,
|
||||||
|
(LPBYTE)lpServiceDeps,
|
||||||
|
dwServiceLength * sizeof(WCHAR));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
RegDeleteValueW(hServiceKey,
|
||||||
|
L"DependOnService");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
HeapFree(GetProcessHeap(), 0, lpGroupDeps);
|
HeapFree(GetProcessHeap(), 0, lpGroupDeps);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue