diff options
author | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-02 02:28:16 +0000 |
---|---|---|
committer | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-02 02:28:16 +0000 |
commit | cabe39c43a98b6b635951d5cb3649e061e36ea21 (patch) | |
tree | c76282b5ed8452f490edbda9ed0a32bf364b5d6a /base/file_util_posix.cc | |
parent | ce716d859764f7a6e8ea0c79bbcd445d856f4da0 (diff) | |
download | chromium_src-cabe39c43a98b6b635951d5cb3649e061e36ea21.zip chromium_src-cabe39c43a98b6b635951d5cb3649e061e36ea21.tar.gz chromium_src-cabe39c43a98b6b635951d5cb3649e061e36ea21.tar.bz2 |
linux: check the return value passed through HANDLE_EINTR
A smarter compiler (clang) can notice that we were not using the return
values being passed through HANDLE_EINTR, which meant most frequently
that we were missing checking the return value of close().
Review URL: http://codereview.chromium.org/569003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@37786 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/file_util_posix.cc')
-rw-r--r-- | base/file_util_posix.cc | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/base/file_util_posix.cc b/base/file_util_posix.cc index d7df8a0..3bd5376 100644 --- a/base/file_util_posix.cc +++ b/base/file_util_posix.cc @@ -481,9 +481,10 @@ int ReadFile(const FilePath& filename, char* data, int size) { if (fd < 0) return -1; - int ret_value = HANDLE_EINTR(read(fd, data, size)); - HANDLE_EINTR(close(fd)); - return ret_value; + ssize_t bytes_read = HANDLE_EINTR(read(fd, data, size)); + if (int ret = HANDLE_EINTR(close(fd)) < 0) + return ret; + return bytes_read; } int WriteFile(const FilePath& filename, const char* data, int size) { @@ -491,9 +492,10 @@ int WriteFile(const FilePath& filename, const char* data, int size) { if (fd < 0) return -1; - int rv = WriteFileDescriptor(fd, data, size); - HANDLE_EINTR(close(fd)); - return rv; + int bytes_written = WriteFileDescriptor(fd, data, size); + if (int ret = HANDLE_EINTR(close(fd)) < 0) + return ret; + return bytes_written; } int WriteFileDescriptor(const int fd, const char* data, int size) { |