From: Peter Krempa Date: Wed, 14 Apr 2021 14:48:53 +0000 (+0200) Subject: conf: domain: Introduce an internal variant of virDomainDiskDefNew X-Git-Tag: v7.3.0-rc1~166 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=dbfb5aa7c03d3a0bc85da97594070d2219055f75;p=thirdparty%2Flibvirt.git conf: domain: Introduce an internal variant of virDomainDiskDefNew The XML element parser is going to be modified so that the virStorageSource bits are pre-parsed. Add virDomainDiskDefNewSource, which uses an existing 'src' pointer. Signed-off-by: Peter Krempa Reviewed-by: Michal Privoznik --- diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 57cad6ffde..f59d17930b 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -2230,25 +2230,32 @@ virDomainDefGetVcpusTopology(const virDomainDef *def, } -virDomainDiskDef * -virDomainDiskDefNew(virDomainXMLOption *xmlopt) +static virDomainDiskDef * +virDomainDiskDefNewSource(virDomainXMLOption *xmlopt, + virStorageSource **src) { + void *privateData = NULL; virDomainDiskDef *ret; - ret = g_new0(virDomainDiskDef, 1); - - ret->src = virStorageSourceNew(); - if (xmlopt && xmlopt->privateData.diskNew && - !(ret->privateData = xmlopt->privateData.diskNew())) - goto error; + !(privateData = xmlopt->privateData.diskNew())) + return NULL; + + ret = g_new0(virDomainDiskDef, 1); + ret->src = g_steal_pointer(src); + ret->privateData = privateData; return ret; +} - error: - virDomainDiskDefFree(ret); - return NULL; + +virDomainDiskDef * +virDomainDiskDefNew(virDomainXMLOption *xmlopt) +{ + g_autoptr(virStorageSource) src = virStorageSourceNew(); + + return virDomainDiskDefNewSource(xmlopt, &src); }