mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 04:13:34 +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:
@@ -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)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user