diff options
Diffstat (limited to 'buffered_file.c')
-rw-r--r-- | buffered_file.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/buffered_file.c b/buffered_file.c index 41c659cbd8..fed9a227bb 100644 --- a/buffered_file.c +++ b/buffered_file.c @@ -71,9 +71,11 @@ static void buffered_append(QEMUFileBuffered *s, static void buffered_flush(QEMUFileBuffered *s) { size_t offset = 0; + int error; - if (qemu_file_get_error(s->file)) { - DPRINTF("flush when error, bailing\n"); + error = qemu_file_get_error(s->file); + if (error != 0) { + DPRINTF("flush when error, bailing: %s\n", strerror(-error)); return; } @@ -108,14 +110,15 @@ static void buffered_flush(QEMUFileBuffered *s) static int buffered_put_buffer(void *opaque, const uint8_t *buf, int64_t pos, int size) { QEMUFileBuffered *s = opaque; - int offset = 0; + int offset = 0, error; ssize_t ret; DPRINTF("putting %d bytes at %" PRId64 "\n", size, pos); - if (qemu_file_get_error(s->file)) { - DPRINTF("flush when error, bailing\n"); - return -EINVAL; + error = qemu_file_get_error(s->file); + if (error) { + DPRINTF("flush when error, bailing: %s\n", strerror(-error)); + return error; } DPRINTF("unfreezing output\n"); @@ -192,14 +195,16 @@ static int buffered_close(void *opaque) * The meaning of the return values is: * 0: We can continue sending * 1: Time to stop - * -1: There has been an error + * negative: There has been an error */ static int buffered_rate_limit(void *opaque) { QEMUFileBuffered *s = opaque; + int ret; - if (qemu_file_get_error(s->file)) { - return -1; + ret = qemu_file_get_error(s->file); + if (ret) { + return ret; } if (s->freeze_output) return 1; |