Update asyncfile.nim: support write to > 2GB file on Windows (#25105)

`DWORD` is defined as `int32`, so `DWORD(...)` would not work as
expected. When writing to files larger than 2GB, exception occurs:

```
unhandled exception: value out of range: 4294967295 notin -2147483648 .. 2147483647 [RangeDefect]
```

This PR is a quick fix for this.

P.S. Why `DWORD` is defined as `int32`?

(cherry picked from commit 4f09675d8a)
This commit is contained in:
Judd
2025-09-10 21:37:09 +08:00
committed by narimiran
parent 2031f9e202
commit 031bbcdece

View File

@@ -428,7 +428,7 @@ proc write*(f: AsyncFile, data: string): Future[void] =
dealloc buffer
buffer = nil
)
ol.offset = DWORD(f.offset and 0xffffffff)
ol.offset = cast[DWORD](f.offset and 0xffffffff)
ol.offsetHigh = DWORD(f.offset shr 32)
f.offset.inc(data.len)