diff options
author | 2024-06-04 23:08:15 -0400 | |
---|---|---|
committer | 2024-06-04 23:08:15 -0400 | |
commit | f569bf66e90375f571f56fb5583ed8278ff93cfc (patch) | |
tree | 8b0d6e37fab5b8cbdcbcf83c02374a18290af1bd | |
parent | 6e243e2f5c320512459f8974e4d2fed59f5cbfb3 (diff) |
util/ioprocs.cpp: Count zero actual bytes written on a write call as an error. Fixes lock-up writing to a write-protected image. [R. Belmont, Peter Ferrie]
-rw-r--r-- | src/lib/util/ioprocs.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/lib/util/ioprocs.cpp b/src/lib/util/ioprocs.cpp index 37a958713b3..a9a26ffd313 100644 --- a/src/lib/util/ioprocs.cpp +++ b/src/lib/util/ioprocs.cpp @@ -797,7 +797,7 @@ std::pair<std::error_condition, std::size_t> write(write_stream &stream, void co std::size_t written; std::error_condition err = stream.write_some(buffer, length, written); actual += written; - if (err && (std::errc::interrupted != err)) + if ((err || !actual) && (std::errc::interrupted != err)) return std::make_pair(err, actual); buffer = reinterpret_cast<std::uint8_t const *>(buffer) + written; length -= written; |