X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=lib%2FSupport%2FMemoryBuffer.cpp;h=2fd3159f09e8efc07d8e505dae0ae38fde9ea28e;hb=refs%2Fheads%2Fnougat-x86;hp=d8cc853f2a878041cfe045e64211c9f285206697;hpb=16f5045794901e308431b81f8ab36e322dfc5913;p=android-x86%2Fexternal-llvm.git diff --git a/lib/Support/MemoryBuffer.cpp b/lib/Support/MemoryBuffer.cpp index d8cc853f2a8..2fd3159f09e 100644 --- a/lib/Support/MemoryBuffer.cpp +++ b/lib/Support/MemoryBuffer.cpp @@ -216,9 +216,11 @@ getMemoryBufferForStream(int FD, const Twine &BufferName) { // Read into Buffer until we hit EOF. do { Buffer.reserve(Buffer.size() + ChunkSize); - ReadBytes = sys::RetryAfterSignal(-1, read, FD, Buffer.end(), ChunkSize); - if (ReadBytes == -1) + ReadBytes = read(FD, Buffer.end(), ChunkSize); + if (ReadBytes == -1) { + if (errno == EINTR) continue; return std::error_code(errno, std::generic_category()); + } Buffer.set_size(Buffer.size() + ReadBytes); } while (ReadBytes != 0); @@ -470,12 +472,13 @@ getOpenFileImpl(int FD, const Twine &Filename, uint64_t FileSize, while (BytesLeft) { #ifdef HAVE_PREAD - ssize_t NumRead = sys::RetryAfterSignal(-1, ::pread, FD, BufPtr, BytesLeft, - MapSize - BytesLeft + Offset); + ssize_t NumRead = ::pread(FD, BufPtr, BytesLeft, MapSize-BytesLeft+Offset); #else - ssize_t NumRead = sys::RetryAfterSignal(-1, ::read, FD, BufPtr, BytesLeft); + ssize_t NumRead = ::read(FD, BufPtr, BytesLeft); #endif if (NumRead == -1) { + if (errno == EINTR) + continue; // Error while reading. return std::error_code(errno, std::generic_category()); }