[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 22/43] Fix error code checking for SetFilePointer()
From: |
Kevin Wolf |
Subject: |
[Qemu-devel] [PATCH 22/43] Fix error code checking for SetFilePointer() call |
Date: |
Thu, 13 Dec 2012 16:10:29 +0100 |
From: Fabien Chouteau <address@hidden>
An error has occurred if the return value is invalid_set_file_pointer
and getlasterror doesn't return no_error.
Signed-off-by: Fabien Chouteau <address@hidden>
Acked-by: Stefan Hajnoczi <address@hidden>
---
block/raw-win32.c | 17 ++++++++++++++---
1 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/block/raw-win32.c b/block/raw-win32.c
index 0c05c58..ce207a3 100644
--- a/block/raw-win32.c
+++ b/block/raw-win32.c
@@ -303,13 +303,24 @@ static int raw_truncate(BlockDriverState *bs, int64_t
offset)
{
BDRVRawState *s = bs->opaque;
LONG low, high;
+ DWORD dwPtrLow;
low = offset;
high = offset >> 32;
- if (!SetFilePointer(s->hfile, low, &high, FILE_BEGIN))
- return -EIO;
- if (!SetEndOfFile(s->hfile))
+
+ /*
+ * An error has occurred if the return value is INVALID_SET_FILE_POINTER
+ * and GetLastError doesn't return NO_ERROR.
+ */
+ dwPtrLow = SetFilePointer(s->hfile, low, &high, FILE_BEGIN);
+ if (dwPtrLow == INVALID_SET_FILE_POINTER && GetLastError() != NO_ERROR) {
+ fprintf(stderr, "SetFilePointer error: %d\n", GetLastError());
+ return -EIO;
+ }
+ if (SetEndOfFile(s->hfile) == 0) {
+ fprintf(stderr, "SetEndOfFile error: %d\n", GetLastError());
return -EIO;
+ }
return 0;
}
--
1.7.6.5
- [Qemu-devel] [PATCH 12/43] block: simplify default_drive, (continued)
- [Qemu-devel] [PATCH 12/43] block: simplify default_drive, Kevin Wolf, 2012/12/13
- [Qemu-devel] [PATCH 07/43] virtio-blk: Remove duplicate property definition, Kevin Wolf, 2012/12/13
- [Qemu-devel] [PATCH 05/43] block: Factor out bdrv_open_flags, Kevin Wolf, 2012/12/13
- [Qemu-devel] [PATCH 10/43] raw-posix: inline paio_ioctl into hdev_aio_ioctl, Kevin Wolf, 2012/12/13
- [Qemu-devel] [PATCH 16/43] qmp: qmp_transaction(): pass Error object to bdrv_img_create(), Kevin Wolf, 2012/12/13
- [Qemu-devel] [PATCH 13/43] block: bdrv_img_create(): add Error ** argument, Kevin Wolf, 2012/12/13
- [Qemu-devel] [PATCH 14/43] qemu-img: img_create(): pass Error object to bdrv_img_create(), Kevin Wolf, 2012/12/13
- [Qemu-devel] [PATCH 08/43] block: vpc initialize the uuid footer field, Kevin Wolf, 2012/12/13
- [Qemu-devel] [PATCH 17/43] qmp: qmp_drive_mirror(): pass Error object to bdrv_img_create(), Kevin Wolf, 2012/12/13
- [Qemu-devel] [PATCH 11/43] Support default block interfaces per QEMUMachine, Kevin Wolf, 2012/12/13
- [Qemu-devel] [PATCH 22/43] Fix error code checking for SetFilePointer() call,
Kevin Wolf <=
- [Qemu-devel] [PATCH 35/43] atapi: reset cdrom tray statuses on ide_reset, Kevin Wolf, 2012/12/13
- [Qemu-devel] [PATCH 27/43] use qemu_opts_create_nofail, Kevin Wolf, 2012/12/13
- [Qemu-devel] [PATCH 43/43] qcow2: Factor out handle_dependencies(), Kevin Wolf, 2012/12/13
- [Qemu-devel] [PATCH 30/43] blkdebug: Factor out remove_rule(), Kevin Wolf, 2012/12/13
- [Qemu-devel] [PATCH 33/43] qcow2: Move BLKDBG_EVENT out of the lock, Kevin Wolf, 2012/12/13
- [Qemu-devel] [PATCH 41/43] qcow2: Enable dirty flag in qcow2_alloc_cluster_link_l2, Kevin Wolf, 2012/12/13
- [Qemu-devel] [PATCH 39/43] qcow2: Drop l2meta.cluster_offset, Kevin Wolf, 2012/12/13
- [Qemu-devel] [PATCH 31/43] blkdebug: Implement suspend/resume of AIO requests, Kevin Wolf, 2012/12/13
- [Qemu-devel] [PATCH 20/43] qemu-io: Implement write -c for compressed clusters, Kevin Wolf, 2012/12/13
- [Qemu-devel] [PATCH 26/43] introduce qemu_opts_create_nofail function, Kevin Wolf, 2012/12/13