This patch adds error reporting when fwrite cannot completely save the buffer to the file.
Signed-off-by: Pavel Dovgalyuk <pavel.dovga...@ispras.ru> -- v3: also check putc() return value --- replay/replay-internal.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/replay/replay-internal.c b/replay/replay-internal.c index a1a7686..1034d8f 100644 --- a/replay/replay-internal.c +++ b/replay/replay-internal.c @@ -24,12 +24,23 @@ static QemuMutex lock; /* File for replay writing */ +static bool write_error; FILE *replay_file; +static void replay_write_error(void) +{ + if (!write_error) { + error_report("replay write error"); + write_error = true; + } +} + void replay_put_byte(uint8_t byte) { if (replay_file) { - putc(byte, replay_file); + if (putc(byte, replay_file) == EOF) { + replay_write_error(); + } } } @@ -62,7 +73,9 @@ void replay_put_array(const uint8_t *buf, size_t size) { if (replay_file) { replay_put_dword(size); - fwrite(buf, 1, size, replay_file); + if (fwrite(buf, 1, size, replay_file) != size) { + replay_write_error(); + } } }