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

View file

@ -547,11 +547,20 @@ namespace fs
u64 seek(s64 offset, 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("fs::container_stream<>::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