On 2/20/25 22:59, Ján Tomko wrote:
> When removing the last child element from a network or domain
> metadata, free the metadata node itself as well, to prevent
> displaying an empty metadata element.
>
> https://issues.redhat.com/browse/RHEL-27172
>
> Signed-off-by: Ján Tomko <jtomko@redhat.com>
> ---
> src/conf/domain_conf.c | 3 +++
> src/conf/virnetworkobj.c | 3 +++
> 2 files changed, 6 insertions(+)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index 6ca604a60b..50763d9514 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -30264,6 +30264,9 @@ virDomainDefSetMetadata(virDomainDef *def,
> return -1;
> }
> new = NULL;
> + } else if (!xmlFirstElementChild(def->metadata)) {
> + xmlFreeNode(def->metadata);
> + def->metadata = NULL;
> }
> break;
>
> diff --git a/src/conf/virnetworkobj.c b/src/conf/virnetworkobj.c
> index 7d4566bdf1..c908c61e67 100644
> --- a/src/conf/virnetworkobj.c
> +++ b/src/conf/virnetworkobj.c
> @@ -2117,6 +2117,9 @@ virNetworkDefSetMetadata(virNetworkDef *def,
> return -1;
> }
> new = NULL;
> + } else if (!xmlFirstElementChild(def->metadata)) {
> + xmlFreeNode(def->metadata);
> + def->metadata = NULL;
> }
> break;
>
Alternatively:
g_clear_pointer(&def->metadata, xmlFreeNode);
Michal