mirror of
https://github.com/rwinkhart/sys.git
synced 2026-08-28 04:46:44 -04:00
windows: support nil done parameter in ReadFile and WriteFile
Win32 defines the `done` param as optional for ReadFile and WriteFile functions. We should support this case too. Fixes golang/go#65365. Change-Id: I961ff66a63d3a8ffa5560b6dab21fbd4ac9817ae Reviewed-on: https://go-review.googlesource.com/c/sys/+/559375 Reviewed-by: Mauri de Souza Meneguzzo <mauri870@gmail.com> Reviewed-by: Bryan Mills <bcmills@google.com> Reviewed-by: Michael Knyszek <mknyszek@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
@@ -572,13 +572,17 @@ func Write(fd Handle, p []byte) (n int, err error) {
|
||||
}
|
||||
|
||||
func ReadFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error {
|
||||
err := readFile(fd, p, done, overlapped)
|
||||
var n uint32
|
||||
err := readFile(fd, p, &n, overlapped)
|
||||
if raceenabled {
|
||||
if *done > 0 {
|
||||
raceWriteRange(unsafe.Pointer(&p[0]), int(*done))
|
||||
if n > 0 {
|
||||
raceWriteRange(unsafe.Pointer(&p[0]), int(n))
|
||||
}
|
||||
raceAcquire(unsafe.Pointer(&ioSync))
|
||||
}
|
||||
if done != nil {
|
||||
*done = n
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -586,9 +590,13 @@ func WriteFile(fd Handle, p []byte, done *uint32, overlapped *Overlapped) error
|
||||
if raceenabled {
|
||||
raceReleaseMerge(unsafe.Pointer(&ioSync))
|
||||
}
|
||||
err := writeFile(fd, p, done, overlapped)
|
||||
if raceenabled && *done > 0 {
|
||||
raceReadRange(unsafe.Pointer(&p[0]), int(*done))
|
||||
var n uint32
|
||||
err := writeFile(fd, p, &n, overlapped)
|
||||
if raceenabled && n > 0 {
|
||||
raceReadRange(unsafe.Pointer(&p[0]), int(n))
|
||||
}
|
||||
if done != nil {
|
||||
*done = n
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user