]> rtime.felk.cvut.cz Git - lisovros/qemu_apohw.git/commitdiff
qga: Use return values instead of error_is_set(errp)
authorMarkus Armbruster <armbru@redhat.com>
Fri, 2 May 2014 11:26:33 +0000 (13:26 +0200)
committerLuiz Capitulino <lcapitulino@redhat.com>
Fri, 9 May 2014 13:11:30 +0000 (09:11 -0400)
Using error_is_set(errp) to check whether a function call failed is
fragile: it breaks when errp is null.  ga_get_fd_handle() and
guest_file_handle_add() don't return a useful value when they fail,
but that's just stupid.  Fix that, and check them instead.  As far
as I can tell, errp can't be null there, but this is more robust and
more obviously correct.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Michael Roth <mdroth@linux.vnet.ibm.com>
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
qga/commands-posix.c
qga/main.c

index f6af7d1ebf4ac723851754c414f7a2c624478025..6af974f61be13c710958950a5d4f239fe1fef393 100644 (file)
@@ -223,8 +223,8 @@ static int64_t guest_file_handle_add(FILE *fh, Error **errp)
     int64_t handle;
 
     handle = ga_get_fd_handle(ga_state, errp);
-    if (error_is_set(errp)) {
-        return 0;
+    if (handle < 0) {
+        return -1;
     }
 
     gfh = g_malloc0(sizeof(GuestFileHandle));
@@ -407,7 +407,7 @@ int64_t qmp_guest_file_open(const char *path, bool has_mode, const char *mode,
     }
 
     handle = guest_file_handle_add(fh, errp);
-    if (error_is_set(errp)) {
+    if (handle < 0) {
         fclose(fh);
         return -1;
     }
index 38219c9d77108c383be53e78eba7592bd90d4967..8b927c9db759a03ea66f71b4994eedb02e40b514 100644 (file)
@@ -910,6 +910,7 @@ int64_t ga_get_fd_handle(GAState *s, Error **errp)
 
     if (!write_persistent_state(&s->pstate, s->pstate_filepath)) {
         error_setg(errp, "failed to commit persistent state to disk");
+        return -1;
     }
 
     return handle;