fs:: handle negative seek

This commit is contained in:
Nekotekina
2017-03-23 21:32:59 +03:00
parent e12a708036
commit 0393c7f52c
4 changed files with 77 additions and 19 deletions
+13 -4
View File
@@ -109,11 +109,20 @@ public:
u64 seek(s64 offset, fs::seek_mode whence) override
{
return
whence == fs::seek_set ? pos = offset :
whence == fs::seek_cur ? pos = offset + pos :
whence == fs::seek_end ? pos = offset + size() :
const s64 new_pos =
whence == fs::seek_set ? offset :
whence == fs::seek_cur ? offset + pos :
whence == fs::seek_end ? offset + size() :
(fmt::raw_error("EDATADecrypter::seek(): invalid whence"), 0);
if (new_pos < 0)
{
fs::g_tls_error = fs::error::inval;
return -1;
}
pos = new_pos;
return pos;
}
u64 size() override { return file_size; }
};