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]

This commit is contained in:
arbee 2024-06-04 23:08:15 -04:00
parent 6e243e2f5c
commit f569bf66e9

View File

@ -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;