| Index: third_party/crashpad/crashpad/util/file/file_writer.cc
|
| diff --git a/third_party/crashpad/crashpad/util/file/file_writer.cc b/third_party/crashpad/crashpad/util/file/file_writer.cc
|
| index edbdb8d5bd51683ace124556471ff92583c40eeb..94f41f143c0f646945f3a9f8358bc2c510489218 100644
|
| --- a/third_party/crashpad/crashpad/util/file/file_writer.cc
|
| +++ b/third_party/crashpad/crashpad/util/file/file_writer.cc
|
| @@ -73,9 +73,19 @@ bool WeakFileHandleFileWriter::WriteIoVec(std::vector<WritableIoVec>* iovecs) {
|
| iovec* iov = reinterpret_cast<iovec*>(&(*iovecs)[0]);
|
| size_t remaining_iovecs = iovecs->size();
|
|
|
| +#if defined(OS_ANDROID)
|
| + // Android does not expose the IOV_MAX macro, but makes its value available
|
| + // via sysconf(). See Android 7.0.0 bionic/libc/bionic/sysconf.cpp sysconf().
|
| + // Bionic defines IOV_MAX at bionic/libc/include/limits.h, but does not ship
|
| + // this file to the NDK as <limits.h>, substituting
|
| + // bionic/libc/include/bits/posix_limits.h.
|
| + const size_t kIovMax = sysconf(_SC_IOV_MAX);
|
| +#else
|
| + const size_t kIovMax = IOV_MAX;
|
| +#endif
|
| +
|
| while (size > 0) {
|
| - size_t writev_iovec_count =
|
| - std::min(remaining_iovecs, implicit_cast<size_t>(IOV_MAX));
|
| + size_t writev_iovec_count = std::min(remaining_iovecs, kIovMax);
|
| ssize_t written =
|
| HANDLE_EINTR(writev(file_handle_, iov, writev_iovec_count));
|
| if (written < 0) {
|
|
|