Reset the permanent flag if the object is changed to non permanent. Modified: trunk/reactos/ntoskrnl/ob/ntobj.c _____
Modified: trunk/reactos/ntoskrnl/ob/ntobj.c --- trunk/reactos/ntoskrnl/ob/ntobj.c 2005-05-29 15:37:47 UTC (rev 15664) +++ trunk/reactos/ntoskrnl/ob/ntobj.c 2005-05-29 15:41:24 UTC (rev 15665) @@ -223,13 +223,20 @@
POBJECT_HEADER ObjectHeader;
ObjectHeader = BODY_TO_HEADER(ObjectBody); - ObjectHeader->Flags |= OB_FLAG_PERMANENT; - - if (ObjectHeader->HandleCount == 0 && !Permanent && HEADER_TO_OBJECT_NAME(ObjectHeader)->Directory) + ASSERT (ObjectHeader->PointerCount > 0); + if (Permanent) { - /* Remove the object from the namespace */ - ObpRemoveEntryDirectory(ObjectHeader); + ObjectHeader->Flags |= OB_FLAG_PERMANENT; } + else + { + ObjectHeader->Flags &= ~OB_FLAG_PERMANENT; + if (ObjectHeader->HandleCount == 0 && HEADER_TO_OBJECT_NAME(ObjectHeader)->Directory) + { + /* Remove the object from the namespace */ + ObpRemoveEntryDirectory(ObjectHeader); + } + } }
/**********************************************************************