rem: int32 block = start >> 5;  while (numBlocks > 0) { uint32 mask = 0; for (int32 i = start % 32; i < 32 && numBlocks; i++, numBlocks--) mask |= 1UL << (i % 32);  #ifdef DEBUG  if (HOST_ENDIAN_TO_BFS_INT32(mask) & ((uint32 *)fBlock)[block]) { FATAL(("AllocationBlock::Allocate(): some blocks are already allocated, start = %u, numBlocks = %u\n", start, numBlocks)); DEBUGGER(("blocks already set!")); } #endif Block(block++) |= HOST_ENDIAN_TO_BFS_INT32(mask); start = 0; }
add: return B_OK;
context: AllocationBlock::Allocate(uint16 start, uint16 numBlocks){	ASSERT(start < fNumBits);	ASSERT(uint32(start + numBlocks) <= fNumBits);	if (uint32(start + numBlocks) > fNumBits) {		FATAL(("Allocation::Allocate(): tried to allocate too many blocks: %u (numBlocks = %lu)!\n", numBlocks, fNumBits));		DIE(("Allocation::Allocate(): tried to allocate too many blocks"));	}	int32 block = start >> 5;	while (numBlocks > 0) {		uint32 mask = 0;		for (int32 i = start % 32; i < 32 && numBlocks; i++, numBlocks--)			mask |= 1UL << (i % 32);#ifdef DEBUG		// check for already set blocks		if (HOST_ENDIAN_TO_BFS_INT32(mask) & ((uint32 *)fBlock)[block]) {			FATAL(("AllocationBlock::Allocate(): some blocks are already allocated, start = %u, numBlocks = %u\n", start, numBlocks));			DEBUGGER(("blocks already set!"));		}#endif		Block(block++) |= HOST_ENDIAN_TO_BFS_INT32(mask);		start = 0;	}}