Skip to content

Commit 511ec84

Browse files
Bryan Millsgopherbot
Bryan Mills
authored andcommitted
Revert "windows: support nil done parameter in ReadFile and WriteFile"
This reverts CL 559375. Reason for revert: introduced a different regression (golang/go#65378). Fixes golang/go#65378. Updates golang/go#65365. Change-Id: Ie2a602415913b04b9d9b65fee5c6a54c0267b35e Cq-Include-Trybots: luci.golang.try:x_sys-gotip-windows-amd64-longtest Reviewed-on: https://go-review.googlesource.com/c/sys/+/559502 Auto-Submit: Bryan Mills <[email protected]> LUCI-TryBot-Result: Go LUCI <[email protected]> Reviewed-by: Michael Knyszek <[email protected]>
1 parent 628365d commit 511ec84

File tree

2 files changed

+6
-69
lines changed

2 files changed

+6
-69
lines changed

windows/syscall_windows.go

+6-14
Original file line numberDiff line numberDiff line change
@@ -572,31 +572,23 @@ func Write(fd Handle, p []byte) (n int, err error) {
572572
}
573573

574574
func ReadFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error {
575-
var n uint32
576-
err := readFile(fd, p, &n, overlapped)
575+
err := readFile(fd, p, done, overlapped)
577576
if raceenabled {
578-
if n > 0 {
579-
raceWriteRange(unsafe.Pointer(&p[0]), int(n))
577+
if *done > 0 {
578+
raceWriteRange(unsafe.Pointer(&p[0]), int(*done))
580579
}
581580
raceAcquire(unsafe.Pointer(&ioSync))
582581
}
583-
if done != nil {
584-
*done = n
585-
}
586582
return err
587583
}
588584

589585
func WriteFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error {
590586
if raceenabled {
591587
raceReleaseMerge(unsafe.Pointer(&ioSync))
592588
}
593-
var n uint32
594-
err := writeFile(fd, p, &n, overlapped)
595-
if raceenabled && n > 0 {
596-
raceReadRange(unsafe.Pointer(&p[0]), int(n))
597-
}
598-
if done != nil {
599-
*done = n
589+
err := writeFile(fd, p, done, overlapped)
590+
if raceenabled && *done > 0 {
591+
raceReadRange(unsafe.Pointer(&p[0]), int(*done))
600592
}
601593
return err
602594
}

windows/syscall_windows_test.go

-55
Original file line numberDiff line numberDiff line change
@@ -1275,58 +1275,3 @@ uintptr_t beep(void) {
12751275
t.Fatal("LoadLibraryEx unexpectedly found beep.dll")
12761276
}
12771277
}
1278-
1279-
func TestReadWriteFileOverlapped(t *testing.T) {
1280-
name := filepath.Join(t.TempDir(), "test.txt")
1281-
fd, err := windows.CreateFile(windows.StringToUTF16Ptr(name), windows.GENERIC_READ|windows.GENERIC_WRITE, 0, nil, windows.CREATE_NEW, windows.FILE_FLAG_OVERLAPPED, 0)
1282-
if err != nil {
1283-
t.Fatal(err)
1284-
}
1285-
defer windows.CloseHandle(fd)
1286-
1287-
content := []byte("hello")
1288-
// Test that we can write to a file using overlapped I/O.
1289-
var ow windows.Overlapped
1290-
ow.HEvent, err = windows.CreateEvent(nil, 0, 0, nil)
1291-
if err != nil {
1292-
t.Fatal(err)
1293-
}
1294-
defer windows.CloseHandle(ow.HEvent)
1295-
if err := windows.WriteFile(fd, content, nil, &ow); err != nil && err != windows.ERROR_IO_PENDING {
1296-
t.Fatal(err)
1297-
}
1298-
if _, err := windows.WaitForSingleObject(ow.HEvent, windows.INFINITE); err != nil {
1299-
t.Fatal(err)
1300-
}
1301-
var n uint32
1302-
if err := windows.GetOverlappedResult(fd, &ow, &n, true); err != nil {
1303-
t.Fatal(err)
1304-
}
1305-
if n != uint32(len(content)) {
1306-
t.Fatalf("got %d bytes written; want %d", n, len(content))
1307-
}
1308-
1309-
// Test that we can read from a file using overlapped I/O.
1310-
var or windows.Overlapped
1311-
or.HEvent, err = windows.CreateEvent(nil, 0, 0, nil)
1312-
if err != nil {
1313-
t.Fatal(err)
1314-
}
1315-
defer windows.CloseHandle(ow.HEvent)
1316-
buf := make([]byte, len(content))
1317-
if err := windows.ReadFile(fd, buf, nil, &or); err != nil && err != windows.ERROR_IO_PENDING {
1318-
t.Fatal(err)
1319-
}
1320-
if err != nil {
1321-
t.Fatal(err)
1322-
}
1323-
if _, err := windows.WaitForSingleObject(or.HEvent, windows.INFINITE); err != nil {
1324-
t.Fatal(err)
1325-
}
1326-
if err := windows.GetOverlappedResult(fd, &or, &n, true); err != nil {
1327-
t.Fatal(err)
1328-
}
1329-
if string(buf) != string(content) {
1330-
t.Fatalf("got %q; want %q", buf, content)
1331-
}
1332-
}

0 commit comments

Comments
 (0)