Implement Read/WriteAtCurrentPos correctly

BUG=356979

Review URL: https://codereview.chromium.org/213473007

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@260673 0039d316-1c4b-4281-b951-d872f2087c98


CrOS-Libchrome-Original-Commit: 09ebff258da414ddd812fcf8e1a7d5f4b82ba88a
diff --git a/base/files/file_posix.cc b/base/files/file_posix.cc
index 46d6d94..176f1f3 100644
--- a/base/files/file_posix.cc
+++ b/base/files/file_posix.cc
@@ -266,7 +266,7 @@
   int bytes_read = 0;
   int rv;
   do {
-    rv = HANDLE_EINTR(read(file_.get(), data, size));
+    rv = HANDLE_EINTR(read(file_.get(), data + bytes_read, size - bytes_read));
     if (rv <= 0)
       break;
 
@@ -325,7 +325,8 @@
   int bytes_written = 0;
   int rv;
   do {
-    rv = HANDLE_EINTR(write(file_.get(), data, size));
+    rv = HANDLE_EINTR(write(file_.get(), data + bytes_written,
+                            size - bytes_written));
     if (rv <= 0)
       break;