If qemu_chr_write_buffer() returned an error, but could write some characters, return the number of character written. Otherwise frontends able to recover and resume writes re-write the partial chars already written.
Cc: [email protected] Suggested-by: Alex Bennée <[email protected]> Signed-off-by: Philippe Mathieu-Daudé <[email protected]> --- chardev/char.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chardev/char.c b/chardev/char.c index 30b21fedce4..5c8130b2435 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -189,7 +189,7 @@ int qemu_chr_write(Chardev *s, const uint8_t *buf, int len, bool write_all) replay_char_write_event_save(res, offset); } - if (res < 0) { + if (res < 0 && offset == 0) { return res; } return offset; -- 2.51.0
