From 0799a9c2d345286b215ece49cf63283d5866d02c Mon Sep 17 00:00:00 2001 From: Judd <4046440+foldl@users.noreply.github.com> Date: Sun, 17 Aug 2025 12:56:16 +0800 Subject: [PATCH] Update asyncfile.nim: support write to > 2GB file on Windows `DWORD` is defined as `int32`, so this 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`? --- lib/pure/asyncfile.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/pure/asyncfile.nim b/lib/pure/asyncfile.nim index 3825904781714..3a57845c22784 100644 --- a/lib/pure/asyncfile.nim +++ b/lib/pure/asyncfile.nim @@ -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)