]> git.tdb.fi Git - libs/core.git/blobdiff - source/io/slice.cpp
Fix seeking of Slice
[libs/core.git] / source / io / slice.cpp
index 423c1a6c8cae85e73c2f6e15e9733786b31d700e..904f748668e472257ae383dd93330cc8fc3d4299 100644 (file)
@@ -90,12 +90,13 @@ int Slice::get()
 
 SeekOffset Slice::seek(SeekOffset off, SeekType type)
 {
-       if(type==S_BEG)
-               off += start_offset;
-       else if(type==S_CUR)
+       off += start_offset;
+       if(type==S_CUR)
                off += position;
        else if(type==S_END)
-               off += start_offset+length;
+               off += length;
+       else if(type!=S_BEG)
+               throw invalid_argument("Slice::seek");
 
        if(off<start_offset || off>start_offset+length)
                throw bad_seek(off, type);