fix large files >4gig

This commit is contained in:
2023-08-22 17:20:56 +02:00
parent bc09b5aa60
commit f4796397ff
3 changed files with 26 additions and 13 deletions

View File

@@ -22,8 +22,6 @@ struct FileRWMapped : public FileI {
std::error_code err;
// sink, is also read
//_file_map = mio::make_mmap_sink(file_path, 0, file_size, err);
//_file_map = mio::make_mmap<mio::ummap_sink>(file_path, 0, file_size, err);
_file_map.map(std::string{file_path}, 0, file_size, err);
if (err) {
@@ -32,18 +30,19 @@ struct FileRWMapped : public FileI {
}
}
virtual ~FileRWMapped(void) {}
virtual ~FileRWMapped(void) override {}
bool isGood(void) override {
return _file_map.is_mapped();
}
std::vector<uint8_t> read(uint64_t pos, uint32_t size) override {
std::vector<uint8_t> read(uint64_t pos, uint64_t size) override {
if (pos+size > _file_size) {
//assert(false && "read past end");
return {};
}
return {_file_map.data()+pos, _file_map.data()+pos+size};
return {_file_map.data()+pos, _file_map.data()+(pos+size)};
}
bool write(uint64_t pos, const std::vector<uint8_t>& data) override {