This isn't quite correct, because `m_block_pos` is used as an offset for `fseek`, which only accepts a `long`.

I also question the necessity of changing `m_block_size` to `size_t`, given that it's only ever set to `BS_DEF_BLOCK_SIZE`, which is well within the range of `int`.