void_index_buf is created with enough space for some void_blocks.size() pairs of uint32. However, when writing this buffer to the file system, sizeof(uint32) is used instead of sizeof(std::pair< uint32, uint32 >).
It seems that half of the void_blocks aren't written back to disk.
I think this is a bug, but wanted to double check, if that's really the case.
I is highly likely that is has no functional effect because it marks unused blocks falsely as used, not the other way round. But this should be fixed nonetheless.
File_Blocks_Index destructor has some code to write back void blocks to disk:
https://github.com/drolbr/Overpass-API/blob/minor_issues/src/template_db/file_blocks_index.h#L375-L389
void_index_buf is created with enough space for some
void_blocks.size()
pairs of uint32. However, when writing this buffer to the file system, sizeof(uint32) is used instead of sizeof(std::pair< uint32, uint32 >).It seems that half of the void_blocks aren't written back to disk.
I think this is a bug, but wanted to double check, if that's really the case.