Fix error message in drive_init
authorKevin Wolf <kwolf@redhat.com>
Tue, 1 Jun 2010 11:20:57 +0000 (13:20 +0200)
committerKevin Wolf <kwolf@redhat.com>
Fri, 4 Jun 2010 09:43:40 +0000 (11:43 +0200)
The real error is the return value of bdrv_open. errno might be overwritten or
not even set to that value in the first place.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
vl.c

diff --git a/vl.c b/vl.c
index 76a9b255693f45dea3d35c3274b1430b89204f65..2769d1a4bc6d51ffd24ac16758d99e3fba610048 100644 (file)
--- a/vl.c
+++ b/vl.c
@@ -789,6 +789,7 @@ DriveInfo *drive_init(QemuOpts *opts, void *opaque,
     const char *devaddr;
     DriveInfo *dinfo;
     int snapshot = 0;
+    int ret;
 
     *fatal_error = 1;
 
@@ -1119,9 +1120,10 @@ DriveInfo *drive_init(QemuOpts *opts, void *opaque,
 
     bdrv_flags |= ro ? 0 : BDRV_O_RDWR;
 
-    if (bdrv_open(dinfo->bdrv, file, bdrv_flags, drv) < 0) {
+    ret = bdrv_open(dinfo->bdrv, file, bdrv_flags, drv);
+    if (ret < 0) {
         fprintf(stderr, "qemu: could not open disk image %s: %s\n",
-                        file, strerror(errno));
+                        file, strerror(-ret));
         return NULL;
     }