Skip to content

Commit 3c43f44

Browse files
committed
FIX: Error writing files of exact size 0xffffffff on Windows
resolves: Oldes/Rebol-issues#2282
1 parent 39347f4 commit 3c43f44

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

src/os/win32/dev-file.c

+4-2
Original file line numberDiff line numberDiff line change
@@ -387,8 +387,10 @@ static BOOL Seek_File_64(REBREQ *file)
387387
size_low = GetFileSize(file->handle, &size_high);
388388
if (size_low == 0xffffffff) {
389389
result = GetLastError();
390-
file->error = -RFE_BAD_WRITE;
391-
return DR_ERROR;
390+
if (result != NO_ERROR) {
391+
file->error = -RFE_BAD_WRITE;
392+
return DR_ERROR;
393+
}
392394
}
393395

394396
file->file.size = ((i64)size_high << 32) + (i64)size_low;

src/tests/test-issue-2282.r3

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
Rebol [
2+
Title: "Test for issue #2282"
3+
Url: https://github.com/Oldes/Rebol-issues/issues/2282
4+
]
5+
6+
file: %issue-2282
7+
try [delete file]
8+
print either all [
9+
not error? try [
10+
a: make binary! n: 268435391
11+
insert/dup a #"a" n
12+
loop 16 [write/append file a]
13+
14+
b: make binary! n: 1039
15+
insert/dup b #"b" n
16+
write/append file b
17+
]
18+
(size? file) = to integer! #{FFFFFFFF}
19+
]["OK"]["FAILED"]
20+
wait 1
21+
try [delete file]

0 commit comments

Comments
 (0)