syscalls can return negative i/o counts. fix bugs in ReadAt and WriteAt not to include
negative counts in return values.
R=rsc
CC=golang-dev
https://golang.org/cl/170044
diff --git a/src/pkg/os/file.go b/src/pkg/os/file.go
index 03c6d57..459b78c 100644
--- a/src/pkg/os/file.go
+++ b/src/pkg/os/file.go
@@ -141,11 +141,11 @@
if m == 0 && e == 0 {
return n, EOF
}
- n += m;
if e != 0 {
err = &PathError{"read", file.name, Errno(e)};
break;
}
+ n += m;
b = b[m:];
off += int64(m);
}
@@ -186,11 +186,11 @@
}
for len(b) > 0 {
m, e := syscall.Pwrite(file.fd, b, off);
- n += m;
if e != 0 {
err = &PathError{"write", file.name, Errno(e)};
break;
}
+ n += m;
b = b[m:];
off += int64(m);
}