aboutsummaryrefslogtreecommitdiff
path: root/nbd/client.c
diff options
context:
space:
mode:
authorEric Blake <eblake@redhat.com>2019-08-24 12:28:12 -0500
committerEric Blake <eblake@redhat.com>2019-09-05 15:52:45 -0500
commitdf18c04edf57b55737ed5125bffe71a8196938a0 (patch)
tree8736b0cfd329925185320014721c549f087af0c4 /nbd/client.c
parent61cc872456492da24e36cfbd668abfbe127c739f (diff)
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>
Diffstat (limited to 'nbd/client.c')
-rw-r--r--nbd/client.c22
1 files changed, 7 insertions, 15 deletions
diff --git a/nbd/client.c b/nbd/client.c
index 49bf9906f9..a9d8d32fef 100644
--- a/nbd/client.c
+++ b/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;
}