]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemuSnapshotCreate: Standardize handling of the reference on @snapdef
authorPeter Krempa <pkrempa@redhat.com>
Wed, 12 Jan 2022 15:35:01 +0000 (16:35 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 14 Jan 2022 17:11:58 +0000 (18:11 +0100)
As with qemuSnapshotRedefine, make an extra reference in a temporary
autocleaned variable and use that instead of refing the definition after
it's stolen.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_snapshot.c

index 5f256a77dfb6789b366b9f0566c27fe474ebd441..c5379d583e3ce93b8486acb121143652cc5c447a 100644 (file)
@@ -1750,11 +1750,12 @@ qemuSnapshotRedefine(virDomainObj *vm,
 static virDomainSnapshotPtr
 qemuSnapshotCreate(virDomainObj *vm,
                    virDomainPtr domain,
-                   virDomainSnapshotDef *snapdef,
+                   virDomainSnapshotDef *snapdeftmp,
                    virQEMUDriver *driver,
                    virQEMUDriverConfig *cfg,
                    unsigned int flags)
 {
+    g_autoptr(virDomainSnapshotDef) snapdef = virObjectRef(snapdeftmp);
     g_autoptr(virDomainMomentObj) tmpsnap = NULL;
     virDomainMomentObj *snap = NULL;
     virDomainMomentObj *current = NULL;
@@ -1769,17 +1770,17 @@ qemuSnapshotCreate(virDomainObj *vm,
     if (flags & VIR_DOMAIN_SNAPSHOT_CREATE_NO_METADATA) {
         snap = tmpsnap = virDomainMomentObjNew();
         snap->def = &snapdef->parent;
+        snapdef = NULL;
     } else {
         if (!(snap = virDomainSnapshotAssignDef(vm->snapshots, snapdef)))
             return NULL;
+        snapdef = NULL;
 
         if ((current = virDomainSnapshotGetCurrent(vm->snapshots))) {
             snap->def->parent_name = g_strdup(current->def->name);
         }
     }
 
-    virObjectRef(snapdef);
-
     /* actually do the snapshot */
     if (virDomainObjIsActive(vm)) {
         if (flags & VIR_DOMAIN_SNAPSHOT_CREATE_DISK_ONLY ||