mirror of
https://github.com/reactos/reactos.git
synced 2025-01-03 21:09:19 +00:00
[SERVICES]
- Free unknown groups when their reference count reaches zero CORE-9480 #resolve svn path=/trunk/; revision=67059
This commit is contained in:
parent
77eb553987
commit
71ac07fc36
2 changed files with 19 additions and 5 deletions
|
@ -416,8 +416,7 @@ ScmDeleteServiceRecord(PSERVICE lpService)
|
|||
ScmDereferenceServiceImage(lpService->lpImage);
|
||||
|
||||
/* Decrement the group reference counter */
|
||||
if (lpService->lpGroup)
|
||||
lpService->lpGroup->dwRefCount--;
|
||||
ScmSetServiceGroup(lpService, NULL);
|
||||
|
||||
/* FIXME: SecurityDescriptor */
|
||||
|
||||
|
|
|
@ -33,11 +33,26 @@ ScmSetServiceGroup(PSERVICE lpService,
|
|||
|
||||
if (lpService->lpGroup != NULL)
|
||||
{
|
||||
lpService->lpGroup->dwRefCount--;
|
||||
|
||||
/* FIXME: What do we have to do when dwRefCount is 0? */
|
||||
ASSERT(lpService->lpGroup->dwRefCount != 0);
|
||||
ASSERT(lpService->lpGroup->dwRefCount == (DWORD)-1 ||
|
||||
lpService->lpGroup->dwRefCount < 10000);
|
||||
if (lpService->lpGroup->dwRefCount != (DWORD)-1)
|
||||
{
|
||||
lpService->lpGroup->dwRefCount--;
|
||||
if (lpService->lpGroup->dwRefCount == 0)
|
||||
{
|
||||
ASSERT(lpService->lpGroup->TagCount == 0);
|
||||
ASSERT(lpService->lpGroup->TagArray == NULL);
|
||||
RemoveEntryList(&lpService->lpGroup->GroupListEntry);
|
||||
HeapFree(GetProcessHeap(), 0, lpService->lpGroup);
|
||||
lpService->lpGroup = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (lpGroupName == NULL)
|
||||
return ERROR_SUCCESS;
|
||||
|
||||
GroupEntry = GroupListHead.Flink;
|
||||
while (GroupEntry != &GroupListHead)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue