GCC 4.8.0+ whines about variable "new" being uninitialized since
commit
73bfac0e7182a3abd. This is a false positive as the
xmlFreeNode(new) statement can be only reached if new was actually
allocated successfully.
CC conf/libvirt_conf_la-domain_conf.lo
conf/domain_conf.c: In function 'virDomainDefSetMetadata':
conf/domain_conf.c:18650:24: error: 'new' may be used uninitialized in this function [-Werror=maybe-uninitialized]
xmlFreeNode(new);
Reported independently by John Ferlan and Michal Privoznik.
{
xmlDocPtr doc = NULL;
xmlNodePtr old;
- xmlNodePtr new;
+ xmlNodePtr new = NULL;
char *tmp;
int ret = -1;
xmlFreeNode(old);
}
- /* just delete the metadata */
- if (!metadata)
- break;
-
- if (!(xmlAddChild(def->metadata, new))) {
+ if (new &&
+ !(xmlAddChild(def->metadata, new))) {
xmlFreeNode(new);
virReportOOMError();
goto cleanup;