Author: bonefish Date: 2010-07-22 22:47:12 +0200 (Thu, 22 Jul 2010) New Revision: 37703 Changeset: http://dev.haiku-os.org/changeset/37703 Modified: haiku/trunk/src/system/kernel/slab/MemoryManager.cpp Log: Free(), FreeRawOrReturnCache(), GetAllocationInfo(), CacheForAddress(): Check Assert that the meta chunk the given address lies in is actually in use. Modified: haiku/trunk/src/system/kernel/slab/MemoryManager.cpp =================================================================== --- haiku/trunk/src/system/kernel/slab/MemoryManager.cpp 2010-07-22 20:41:58 UTC (rev 37702) +++ haiku/trunk/src/system/kernel/slab/MemoryManager.cpp 2010-07-22 20:47:12 UTC (rev 37703) @@ -570,6 +570,7 @@ MetaChunk* metaChunk = &area->metaChunks[ ((addr_t)pages % SLAB_AREA_SIZE) / SLAB_CHUNK_SIZE_LARGE]; + ASSERT(metaChunk->chunkSize > 0); ASSERT((addr_t)pages >= metaChunk->chunkBase); ASSERT(((addr_t)pages % metaChunk->chunkSize) == 0); @@ -696,6 +697,7 @@ ((addr_t)pages % SLAB_AREA_SIZE) / SLAB_CHUNK_SIZE_LARGE]; // get the chunk + ASSERT(metaChunk->chunkSize > 0); ASSERT((addr_t)pages >= metaChunk->chunkBase); uint16 chunkIndex = _ChunkIndexForAddress(metaChunk, (addr_t)pages); Chunk* chunk = &metaChunk->chunks[chunkIndex]; @@ -760,6 +762,7 @@ ((addr_t)address % SLAB_AREA_SIZE) / SLAB_CHUNK_SIZE_LARGE]; // get the chunk + ASSERT(metaChunk->chunkSize > 0); ASSERT((addr_t)address >= metaChunk->chunkBase); uint16 chunkIndex = _ChunkIndexForAddress(metaChunk, (addr_t)address); @@ -790,6 +793,7 @@ ((addr_t)address % SLAB_AREA_SIZE) / SLAB_CHUNK_SIZE_LARGE]; // get the chunk + ASSERT(metaChunk->chunkSize > 0); ASSERT((addr_t)address >= metaChunk->chunkBase); uint16 chunkIndex = _ChunkIndexForAddress(metaChunk, (addr_t)address);