Author: fireball
Date: Sat Aug 11 13:04:17 2007
New Revision: 28280
URL:
http://svn.reactos.org/svn/reactos?rev=28280&view=rev
Log:
- Minor code changes, plus a temporary (DPRINT1) change for the HandleCount != 0 problem.
Modified:
trunk/reactos/ntoskrnl/ob/obhandle.c
Modified: trunk/reactos/ntoskrnl/ob/obhandle.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ob/obhandle.c?rev…
==============================================================================
--- trunk/reactos/ntoskrnl/ob/obhandle.c (original)
+++ trunk/reactos/ntoskrnl/ob/obhandle.c Sat Aug 11 13:04:17 2007
@@ -1259,6 +1259,12 @@
ObjectHeader->HandleCount,
ObjectHeader->PointerCount);
+ /* Save the object header */
+ NewEntry.Object = ObjectHeader;
+
+ /* Mask out the internal attributes */
+ NewEntry.ObAttributes |= HandleAttributes & OBJ_HANDLE_ATTRIBUTES;
+
/* Check if this is a kernel handle */
if (HandleAttributes & OBJ_KERNEL_HANDLE)
{
@@ -1295,12 +1301,6 @@
if (AttachedToProcess) KeUnstackDetachProcess(&ApcState);
return Status;
}
-
- /* Save the object header */
- NewEntry.Object = ObjectHeader;
-
- /* Mask out the internal attributes */
- NewEntry.ObAttributes |= HandleAttributes & OBJ_HANDLE_ATTRIBUTES;
/* Remove what's not in the valid access mask */
GrantedAccess = DesiredAccess & (ObjectType->TypeInfo.ValidAccessMask |
@@ -1503,11 +1503,11 @@
if (AccessState->GenerateOnClose)
{
/* Force the attribute on */
- HandleAttributes|= OBJ_AUDIT_OBJECT_CLOSE;
+ HandleAttributes |= OBJ_AUDIT_OBJECT_CLOSE;
}
/* Mask out the internal attributes */
- NewEntry.ObAttributes |= HandleAttributes & OBJ_HANDLE_ATTRIBUTES;
+ NewEntry.ObAttributes |= (HandleAttributes & OBJ_HANDLE_ATTRIBUTES);
/* Get the original desired access */
DesiredAccess = AccessState->RemainingDesiredAccess |
@@ -2031,7 +2031,12 @@
ExSweepHandleTable(HandleTable,
ObpCloseHandleCallback,
&Context);
- ASSERT(HandleTable->HandleCount == 0);
+ //ASSERT(HandleTable->HandleCount == 0);
+ /* HACK: Until the problem is investigated... */
+ if (HandleTable->HandleCount != 0)
+ {
+ DPRINT1("Leaking %d handles!\n", HandleTable->HandleCount);
+ }
/* Leave the critical region */
KeLeaveCriticalRegion();
@@ -2197,7 +2202,7 @@
/* Fill out the entry */
RtlZeroMemory(&NewHandleEntry, sizeof(HANDLE_TABLE_ENTRY));
NewHandleEntry.Object = ObjectHeader;
- NewHandleEntry.ObAttributes |= HandleAttributes & OBJ_HANDLE_ATTRIBUTES;
+ NewHandleEntry.ObAttributes |= (HandleAttributes & OBJ_HANDLE_ATTRIBUTES);
/* Check if we're using a generic mask */
if (DesiredAccess & GENERIC_ACCESS)