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 <[email protected]>
Reviewed-by: Eric Blake <[email protected]>
Reviewed-by: Michael Roth <[email protected]>
Signed-off-by: Luiz Capitulino <[email protected]>
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));
}
handle = guest_file_handle_add(fh, errp);
- if (error_is_set(errp)) {
+ if (handle < 0) {
fclose(fh);
return -1;
}
if (!write_persistent_state(&s->pstate, s->pstate_filepath)) {
error_setg(errp, "failed to commit persistent state to disk");
+ return -1;
}
return handle;