fix large files >4gig
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user