Hi,
Alex-from-Texas here.
WOW, that was awesome. I forgive you for comitting that satanic LDT "patch" because of this.
Best regards, Alex Ionescu
fireball@svn.reactos.org wrote:
Author: fireball Date: Mon Aug 7 01:15:55 2006 New Revision: 23508
URL: http://svn.reactos.org/svn/reactos?rev=23508&view=rev Log: Goodbye REGISTRY_ERROR bsod!
- Change UserMode -> KernelMode in ObReferenceObject*() calls, because that calls failed
- Remove Cm-specific hack from Ob
"advapi32_winetest.exe registry" shows 0 failures on the first run and 2 failures on further runs. I suppose there might be a leakage in the CM. To be investigated further (or wait till complete Cm rewrite in October).
Modified: trunk/reactos/ntoskrnl/cm/regobj.c trunk/reactos/ntoskrnl/ob/obhandle.c
Modified: trunk/reactos/ntoskrnl/cm/regobj.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/cm/regobj.c?rev=23... ============================================================================== --- trunk/reactos/ntoskrnl/cm/regobj.c (original) +++ trunk/reactos/ntoskrnl/cm/regobj.c Mon Aug 7 01:15:55 2006 @@ -148,7 +148,7 @@ ObReferenceObjectByPointer(FoundObject, STANDARD_RIGHTS_REQUIRED, CmiKeyType,
UserMode);
KernelMode); if (End != NULL) { *End = L'\\';@@ -790,7 +790,7 @@ ObReferenceObjectByPointer(ParentKey, STANDARD_RIGHTS_REQUIRED, CmiKeyType,
UserMode);
NewKey->ParentKey = ParentKey;KernelMode);}
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 Mon Aug 7 01:15:55 2006 @@ -239,17 +239,8 @@ /* Dereference the object as well */ ASSERT(ObjectHeader->Type); ASSERT(ObjectHeader->PointerCount != 0xCCCCCCCC);
- if (!wcscmp(ObjectHeader->Type->Name.Buffer, L"Key"))
- {
//// WE DONT CLOSE REGISTRY HANDLES BECAUSE CM IS BRAINDEAD//DPRINT("NOT CLOSING THE KEY\n");- }
- else
- {
ObDereferenceObject(Body);- }
ObDereferenceObject(Body);
/* Return to caller */ OBTRACE(OB_HANDLE_DEBUG,