diff --git a/2.x/trunk/phlib/basesup.c b/2.x/trunk/phlib/basesup.c index ed783eb6c..e1ff3563d 100644 --- a/2.x/trunk/phlib/basesup.c +++ b/2.x/trunk/phlib/basesup.c @@ -103,6 +103,8 @@ static ULONG PhpPrimeNumbers[] = */ BOOLEAN PhInitializeBase() { + PH_OBJECT_TYPE_PARAMETERS parameters; + if (!NT_SUCCESS(PhCreateObjectType( &PhStringType, L"String", @@ -119,11 +121,15 @@ BOOLEAN PhInitializeBase() ))) return FALSE; - if (!NT_SUCCESS(PhCreateObjectType( + parameters.FreeListSize = sizeof(PH_LIST); + parameters.FreeListCount = 128; + + if (!NT_SUCCESS(PhCreateObjectTypeEx( &PhListType, L"List", - 0, - PhpListDeleteProcedure + PHOBJTYPE_USE_FREE_LIST, + PhpListDeleteProcedure, + ¶meters ))) return FALSE; @@ -143,11 +149,15 @@ BOOLEAN PhInitializeBase() ))) return FALSE; - if (!NT_SUCCESS(PhCreateObjectType( + parameters.FreeListSize = sizeof(PH_HASHTABLE); + parameters.FreeListCount = 64; + + if (!NT_SUCCESS(PhCreateObjectTypeEx( &PhHashtableType, L"Hashtable", - 0, - PhpHashtableDeleteProcedure + PHOBJTYPE_USE_FREE_LIST, + PhpHashtableDeleteProcedure, + ¶meters ))) return FALSE; diff --git a/2.x/trunk/phlib/ref.c b/2.x/trunk/phlib/ref.c index e616a4ab3..243cccb80 100644 --- a/2.x/trunk/phlib/ref.c +++ b/2.x/trunk/phlib/ref.c @@ -575,10 +575,10 @@ PPH_OBJECT_HEADER PhpAllocateObject( if (ObjectType->Flags & PHOBJTYPE_USE_FREE_LIST) { #ifdef PHOBJ_STRICT_CHECKS - if (ObjectType->FreeList.Size != ObjectSize) + if (ObjectType->FreeList.Size != PhpAddObjectHeaderSize(ObjectSize)) PhRaiseStatus(STATUS_INVALID_PARAMETER); #else - assert(ObjectType->FreeList.Size == ObjectSize); + assert(ObjectType->FreeList.Size == PhpAddObjectHeaderSize(ObjectSize)); #endif objectHeader = PhAllocateFromFreeList(&ObjectType->FreeList);