zturner added inline comments.

================
Comment at: source/Host/common/File.cpp:405
 
-    if (bytes_read == 0) {
-      if (::feof(m_stream))
-        error.SetErrorString("feof");
-      else if (::ferror(m_stream))
-        error.SetErrorString("ferror");
-      num_bytes = 0;
-    } else
-      num_bytes = bytes_read;
-  } else {
-    num_bytes = 0;
-    error.SetErrorString("invalid file handle");
-  }
-  return error;
+  off_t offset = lseek(fd, 0, SEEK_CUR);
+  return Read(buf, num_bytes, offset);
----------------
clayborg wrote:
> Why are we calling lseek when we are passing the offset into the read below?
> 
> Shouldn't this just be:
> ```
> off_t offset = 0;
> ```
This `lseek` is to get the current file pointer.  If someone calls `Write()` 
with no offset, they expect this to mean "write at the current file position".  
In order to do that with `pwrite()`, you need to know what the current file 
position actually is.  If we just set `offset=0`, it will write at the 
beginning of the file, which is probably not the intention.

LMK if I've misunderstood.


https://reviews.llvm.org/D25783



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to