On a Friday in 2022, Michal Privoznik wrote:
There are few places inside src/libxl/xen_xl.c that can benefit
from g_autofree. Let them use automatic memory freeing.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
src/libxl/xen_xl.c | 17 ++++++-----------
1 file changed, 6 insertions(+), 11 deletions(-)
[...]
@@ -952,13 +951,13 @@ xenParseXLChannel(virConf *conf, virDomainDef
*def)
{
virConfValue *list = virConfGetValue(conf, "channel");
virDomainChrDef *channel = NULL;
- char *name = NULL;
- char *path = NULL;
if (list && list->type == VIR_CONF_LIST) {
list = list->list;
while (list) {
g_autofree char *type = NULL;
+ g_autofree char *name = NULL;
+ g_autofree char *path = NULL;
char *key;
if ((list->type != VIR_CONF_STRING) || (list->str == NULL))
@@ -1003,7 +1002,6 @@ xenParseXLChannel(virConf *conf, virDomainDef *def)
There's a mix of g_auto with manual freeing here:
} else if (STRPREFIX(key, "name=")) {
int len = nextkey ? (nextkey - data) : strlen(data);
VIR_FREE(name);
name = g_strndup(data, len);
} else if (STRPREFIX(key, "path=")) {
int len = nextkey ? (nextkey - data) : strlen(data);
VIR_FREE(path);
path = g_strndup(data, len);
}
I would prefer either altering the code to take the first key into
account instead of the last one by checking:
else if (!name && STRPREFIX...
similarly how we do in node-based XML parsers, or leaving these two
variables unconverted and leave the refactor for later.
Jano
channel->source->data.nix.path =
g_steal_pointer(&path);
} else if (STRPREFIX(type, "pty")) {