Quoting Markus Armbruster (2014-04-28 15:27:45) > 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 <arm...@redhat.com> > Reviewed-by: Eric Blake <ebl...@redhat.com>
Reviewed-by: Michael Roth <mdr...@linux.vnet.ibm.com> > --- > qga/commands-posix.c | 6 +++--- > qga/main.c | 1 + > 2 files changed, 4 insertions(+), 3 deletions(-) > > diff --git a/qga/commands-posix.c b/qga/commands-posix.c > index f6af7d1..6af974f 100644 > --- a/qga/commands-posix.c > +++ b/qga/commands-posix.c > @@ -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; > } > diff --git a/qga/main.c b/qga/main.c > index d838c3e..eb792a3 100644 > --- a/qga/main.c > +++ b/qga/main.c > @@ -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; > -- > 1.8.1.4