| ... | ... | @@ -48,6 +48,7 @@ error PathNotFound; |
| 48 | 48 | error OutOfMemory; |
| 49 | 49 | error Unseekable; |
| 50 | 50 | error EndOfFile; |
| 51 | error FilePosLargerThanPointerRange; |
| 51 | 52 | |
| 52 | 53 | pub fn getStdErr() -> %File { |
| 53 | 54 | const handle = if (is_windows) |
| ... | ... | @@ -266,8 +267,8 @@ pub const File = struct { |
| 266 | 267 | return result; |
| 267 | 268 | }, |
| 268 | 269 | Os.windows => { |
| 269 | | var pos : usize = undefined; |
| 270 | | if (system.SetFilePointerEx(self.handle, 0, @ptrCast(system.PLARGE_INTEGER, &pos), system.FILE_CURRENT) == 0) { |
| 270 | var pos : system.LARGE_INTEGER = undefined; |
| 271 | if (system.SetFilePointerEx(self.handle, 0, &pos, system.FILE_CURRENT) == 0) { |
| 271 | 272 | const err = system.GetLastError(); |
| 272 | 273 | return switch (err) { |
| 273 | 274 | system.ERROR.INVALID_PARAMETER => error.BadFd, |
| ... | ... | @@ -275,7 +276,12 @@ pub const File = struct { |
| 275 | 276 | }; |
| 276 | 277 | } |
| 277 | 278 | |
| 278 | | return pos; |
| 279 | assert(pos >= 0); |
| 280 | if (pos > @maxValue(usize)) { |
| 281 | return error.FilePosLargerThanPointerRange; |
| 282 | } |
| 283 | |
| 284 | return usize(pos); |
| 279 | 285 | }, |
| 280 | 286 | else => @compileError("unsupported OS"), |
| 281 | 287 | } |