| 222 | } |
| 223 | |
| 224 | static ErrorOr<std::unique_ptr<WritableMemoryBuffer>> |
| 225 | getMemoryBufferForStream(sys::fs::file_t FD, const Twine &BufferName) { |
| 226 | const ssize_t ChunkSize = 4096*4; |
| 227 | SmallString<ChunkSize> Buffer; |
| 228 | // Read into Buffer until we hit EOF. |
| 229 | for (;;) { |
| 230 | Buffer.reserve(Buffer.size() + ChunkSize); |
| 231 | Expected<size_t> ReadBytes = sys::fs::readNativeFile( |
| 232 | FD, makeMutableArrayRef(Buffer.end(), ChunkSize)); |
| 233 | if (!ReadBytes) |
| 234 | return errorToErrorCode(ReadBytes.takeError()); |
| 235 | if (*ReadBytes == 0) |
| 236 | break; |
| 237 | Buffer.set_size(Buffer.size() + *ReadBytes); |
| 238 | } |
| 239 | |
| 240 | return getMemBufferCopyImpl(Buffer, BufferName); |
| 241 | } |
| 242 | |
| 243 | |
| 244 | ErrorOr<std::unique_ptr<MemoryBuffer>> |
no test coverage detected