Index: base/sync_socket_posix.cc |
diff --git a/base/sync_socket_posix.cc b/base/sync_socket_posix.cc |
index c2020c2ad632f93cabc2fb755608218a9de59ec2..91467b189c72d69ac604130ec7f96dba951faa18 100644 |
--- a/base/sync_socket_posix.cc |
+++ b/base/sync_socket_posix.cc |
@@ -63,10 +63,14 @@ bool SyncSocket::CreatePair(SyncSocket* pair[2]) { |
return true; |
cleanup: |
- if (handles[0] != kInvalidHandle) |
- (void) close(handles[0]); |
- if (handles[1] != kInvalidHandle) |
- (void) close(handles[1]); |
+ if (handles[0] != kInvalidHandle) { |
+ if (HANDLE_EINTR(close(handles[0])) < 0) |
+ PLOG(ERROR) << "close"; |
+ } |
+ if (handles[1] != kInvalidHandle) { |
+ if (HANDLE_EINTR(close(handles[1])) < 0) |
+ PLOG(ERROR) << "close"; |
+ } |
delete tmp_sockets[0]; |
delete tmp_sockets[1]; |
return false; |
@@ -76,7 +80,9 @@ bool SyncSocket::Close() { |
if (handle_ == kInvalidHandle) { |
return false; |
} |
- int retval = close(handle_); |
+ int retval = HANDLE_EINTR(close(handle_)); |
+ if (retval < 0) |
+ PLOG(ERROR) << "close"; |
handle_ = kInvalidHandle; |
return (retval == 0); |
} |