handle seeking before the file start on windows, add a unit test for this

db4
Doug Coleman 2009-02-08 20:18:30 -06:00
parent 1818ea5136
commit b529df9652
2 changed files with 14 additions and 3 deletions

View File

@ -87,11 +87,16 @@ ERROR: invalid-file-size n ;
: handle>file-size ( handle -- n )
0 <ulonglong> [ GetFileSizeEx win32-error=0/f ] keep *ulonglong ;
ERROR: seek-before-start n ;
: set-seek-ptr ( n handle -- )
[ dup 0 < [ seek-before-start ] when ] dip (>>ptr) ;
M: winnt seek-handle ( n seek-type handle -- )
swap {
{ seek-absolute [ (>>ptr) ] }
{ seek-relative [ [ + ] change-ptr drop ] }
{ seek-end [ [ handle>> handle>file-size + ] keep (>>ptr) ] }
{ seek-absolute [ set-seek-ptr ] }
{ seek-relative [ [ ptr>> + ] keep set-seek-ptr ] }
{ seek-end [ [ handle>> handle>file-size + ] keep set-seek-ptr ] }
[ bad-seek-type ]
} case ;

View File

@ -138,3 +138,9 @@ USE: debugger.threads
] with-file-reader
] 2bi
] unit-test
[
"seek-test6" unique-file binary [
-10 seek-absolute seek-input
] with-file-reader
] must-fail