Fix assert(is_buffer_area_free) with size=0

This commit is contained in:
Vitaliy Filippov
2025-12-02 01:52:12 +03:00
parent 0ec4f1608a
commit e5e71fc21a
+3 -3
View File
@@ -235,10 +235,10 @@ static uint32_t free_writes(heap_write_t *wr, heap_write_t *to)
} }
// EASY PEASY LEMON SQUEEZIE // EASY PEASY LEMON SQUEEZIE
void blockstore_heap_t::read_blocks(uint64_t disk_offset, uint64_t size, uint8_t *buf, void blockstore_heap_t::read_blocks(uint64_t disk_offset, uint64_t disk_size, uint8_t *buf,
std::function<void(heap_object_t*)> handle_object, std::function<void(uint32_t, uint32_t, uint8_t*)> handle_block) std::function<void(heap_object_t*)> handle_object, std::function<void(uint32_t, uint32_t, uint8_t*)> handle_block)
{ {
for (uint64_t buf_offset = 0; buf_offset < size; buf_offset += dsk->meta_block_size) for (uint64_t buf_offset = 0; buf_offset < disk_size; buf_offset += dsk->meta_block_size)
{ {
uint32_t block_num = (disk_offset + buf_offset) / dsk->meta_block_size; uint32_t block_num = (disk_offset + buf_offset) / dsk->meta_block_size;
assert(block_num < block_info.size()); assert(block_num < block_info.size());
@@ -2086,7 +2086,7 @@ uint64_t blockstore_heap_t::find_free_buffer_area(uint64_t size)
bool blockstore_heap_t::is_buffer_area_free(uint64_t location, uint64_t size) bool blockstore_heap_t::is_buffer_area_free(uint64_t location, uint64_t size)
{ {
assert(!(location % dsk->bitmap_granularity)); assert(!(location % dsk->bitmap_granularity));
return buffer_alloc->is_free(location / dsk->bitmap_granularity); return !size || buffer_alloc->is_free(location / dsk->bitmap_granularity);
} }
void blockstore_heap_t::use_buffer_area(inode_t inode, uint64_t location, uint64_t size) void blockstore_heap_t::use_buffer_area(inode_t inode, uint64_t location, uint64_t size)