diff options
author | Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru> | 2018-02-27 12:52:59 +0300 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2018-03-12 17:10:37 +0100 |
commit | 6dc0f5296359ff59c248215a965c8658dea9544b (patch) | |
tree | 48abd96abda931fe2128b30cbe8482f7bf95d1d8 /replay/replay-internal.c | |
parent | d759c951f3287fad04210a52f2dc93f94cf58c7f (diff) |
replay: check return values of fwrite
This patch adds error reporting when fwrite cannot completely
save the buffer to the file.
Signed-off-by: Pavel Dovgalyuk <pavel.dovgaluk@ispras.ru>
Message-Id: <20180227095259.1060.86410.stgit@pasha-VirtualBox>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Pavel Dovgalyuk <Pavel.Dovgaluk@ispras.ru>
Diffstat (limited to 'replay/replay-internal.c')
-rw-r--r-- | replay/replay-internal.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/replay/replay-internal.c b/replay/replay-internal.c index 8e7474f787..b077cb5fd5 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(); + } } } |