libobs/util: Retry pipe writes to avoid short-write failures

Previously, any short write would be treated elsewhere as a failure. The
easiest solution is to have pipe_write() automatically retry until either
it's written everything, or it couldn't write anything at all.
This commit is contained in:
Chris Angelico 2020-02-24 11:57:46 +11:00
parent 704d2c9e11
commit 664acef494

View File

@ -93,5 +93,12 @@ size_t os_process_pipe_write(os_process_pipe_t *pp, const uint8_t *data,
return 0;
}
return fwrite(data, 1, len, pp->file);
size_t written = 0;
while (written < len) {
size_t ret = fwrite(data + written, 1, len - written, pp->file);
if (!ret)
return written;
written += ret;
}
return written;
}