Split out the call to the update method only to places where it is
actually used rather than having a mega-method that does all the stuff.
---
src/qemu/qemu_driver.c | 26 +++++++++++++++-----------
1 file changed, 15 insertions(+), 11 deletions(-)
diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
index a276ea5..0151fd2 100644
--- a/src/qemu/qemu_driver.c
+++ b/src/qemu/qemu_driver.c
@@ -5495,16 +5495,6 @@ qemuDomainSaveImageOpen(virQEMUDriverPtr driver,
VIR_DOMAIN_XML_INACTIVE)))
goto error;
- if (xmlin) {
- virDomainDefPtr tmp;
-
- if (!(tmp = qemuDomainSaveImageUpdateDef(driver, def, xmlin)))
- goto error;
-
- virDomainDefFree(def);
- def = tmp;
- }
-
if (xmlout)
*xmlout = xml;
else
@@ -5647,6 +5637,7 @@ qemuDomainRestoreFlags(virConnectPtr conn,
{
virQEMUDriverPtr driver = conn->privateData;
virDomainDefPtr def = NULL;
+ virDomainDefPtr newdef = NULL;
virDomainObjPtr vm = NULL;
int fd = -1;
int ret = -1;
@@ -5673,6 +5664,14 @@ qemuDomainRestoreFlags(virConnectPtr conn,
if (virDomainRestoreFlagsEnsureACL(conn, def) < 0)
goto cleanup;
+ if (dxml) {
+ if (!(newdef = qemuDomainSaveImageUpdateDef(driver, def, dxml)))
+ goto cleanup;
+
+ virDomainDefFree(def);
+ def = newdef;
+ }
+
if (!(vm = virDomainObjListAdd(driver->domains, def,
driver->xmlopt,
VIR_DOMAIN_OBJ_LIST_ADD_LIVE |
@@ -5749,6 +5748,7 @@ qemuDomainSaveImageDefineXML(virConnectPtr conn, const char *path,
virQEMUDriverPtr driver = conn->privateData;
int ret = -1;
virDomainDefPtr def = NULL;
+ virDomainDefPtr newdef = NULL;
int fd = -1;
virQEMUSaveHeader header;
char *xml = NULL;
@@ -5776,7 +5776,10 @@ qemuDomainSaveImageDefineXML(virConnectPtr conn, const char *path,
if (virDomainSaveImageDefineXMLEnsureACL(conn, def) < 0)
goto cleanup;
- xml = qemuDomainDefFormatXML(driver, def,
+ if (!(newdef = qemuDomainSaveImageUpdateDef(driver, def, dxml)))
+ goto cleanup;
+
+ xml = qemuDomainDefFormatXML(driver, newdef,
VIR_DOMAIN_XML_INACTIVE |
VIR_DOMAIN_XML_SECURE |
VIR_DOMAIN_XML_MIGRATABLE);
@@ -5807,6 +5810,7 @@ qemuDomainSaveImageDefineXML(virConnectPtr conn, const char *path,
cleanup:
virDomainDefFree(def);
+ virDomainDefFree(newdef);
VIR_FORCE_CLOSE(fd);
VIR_FREE(xml);
return ret;
--
2.1.0