mirror of
https://github.com/mii443/qemu.git
synced 2025-12-03 11:08:25 +00:00
nbd: Use g_autofree in a few places
Thanks to our recent move to use glib's g_autofree, I can join the bandwagon. Getting rid of gotos is fun ;) There are probably more places where we could register cleanup functions and get rid of more gotos; this patch just focuses on the labels that existed merely to call g_free. Signed-off-by: Eric Blake <eblake@redhat.com> Message-Id: <20190824172813.29720-2-eblake@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@virtuozzo.com>
This commit is contained in:
22
nbd/client.c
22
nbd/client.c
@@ -247,12 +247,11 @@ static int nbd_handle_reply_err(QIOChannel *ioc, NBDOptionReply *reply,
|
||||
static int nbd_receive_list(QIOChannel *ioc, char **name, char **description,
|
||||
Error **errp)
|
||||
{
|
||||
int ret = -1;
|
||||
NBDOptionReply reply;
|
||||
uint32_t len;
|
||||
uint32_t namelen;
|
||||
char *local_name = NULL;
|
||||
char *local_desc = NULL;
|
||||
g_autofree char *local_name = NULL;
|
||||
g_autofree char *local_desc = NULL;
|
||||
int error;
|
||||
|
||||
if (nbd_receive_option_reply(ioc, NBD_OPT_LIST, &reply, errp) < 0) {
|
||||
@@ -298,7 +297,7 @@ static int nbd_receive_list(QIOChannel *ioc, char **name, char **description,
|
||||
local_name = g_malloc(namelen + 1);
|
||||
if (nbd_read(ioc, local_name, namelen, "export name", errp) < 0) {
|
||||
nbd_send_opt_abort(ioc);
|
||||
goto out;
|
||||
return -1;
|
||||
}
|
||||
local_name[namelen] = '\0';
|
||||
len -= namelen;
|
||||
@@ -306,24 +305,17 @@ static int nbd_receive_list(QIOChannel *ioc, char **name, char **description,
|
||||
local_desc = g_malloc(len + 1);
|
||||
if (nbd_read(ioc, local_desc, len, "export description", errp) < 0) {
|
||||
nbd_send_opt_abort(ioc);
|
||||
goto out;
|
||||
return -1;
|
||||
}
|
||||
local_desc[len] = '\0';
|
||||
}
|
||||
|
||||
trace_nbd_receive_list(local_name, local_desc ?: "");
|
||||
*name = local_name;
|
||||
local_name = NULL;
|
||||
*name = g_steal_pointer(&local_name);
|
||||
if (description) {
|
||||
*description = local_desc;
|
||||
local_desc = NULL;
|
||||
*description = g_steal_pointer(&local_desc);
|
||||
}
|
||||
ret = 1;
|
||||
|
||||
out:
|
||||
g_free(local_name);
|
||||
g_free(local_desc);
|
||||
return ret;
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user