diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c index cc6d9bbd44ad44c5a521ed96f2f91c705cdc131c..2ab7ead92ea208f4bc5cf83761f6d78b6460097d 100644 --- a/src/qemu/qemu_capabilities.c +++ b/src/qemu/qemu_capabilities.c @@ -1649,6 +1649,17 @@ virQEMUCapsNew(void) } +virQEMUCapsPtr +virQEMUCapsNewBinary(const char *binary) +{ + virQEMUCapsPtr qemuCaps = virQEMUCapsNew(); + + qemuCaps->binary = g_strdup(binary); + + return qemuCaps; +} + + void virQEMUCapsSetInvalidation(virQEMUCapsPtr qemuCaps, bool enabled) @@ -1750,7 +1761,7 @@ virQEMUCapsAccelCopy(virQEMUCapsAccelPtr dst, virQEMUCapsPtr virQEMUCapsNewCopy(virQEMUCapsPtr qemuCaps) { - virQEMUCapsPtr ret = virQEMUCapsNew(); + virQEMUCapsPtr ret = virQEMUCapsNewBinary(qemuCaps->binary); size_t i; if (!ret) @@ -1760,8 +1771,6 @@ virQEMUCapsPtr virQEMUCapsNewCopy(virQEMUCapsPtr qemuCaps) ret->usedQMP = qemuCaps->usedQMP; ret->kvmSupportsNesting = qemuCaps->kvmSupportsNesting; - ret->binary = g_strdup(qemuCaps->binary); - ret->ctime = qemuCaps->ctime; virBitmapCopy(ret->flags, qemuCaps->flags); @@ -4950,11 +4959,9 @@ virQEMUCapsNewForBinaryInternal(virArch hostArch, virQEMUCapsPtr qemuCaps; struct stat sb; - if (!(qemuCaps = virQEMUCapsNew())) + if (!(qemuCaps = virQEMUCapsNewBinary(binary))) goto error; - qemuCaps->binary = g_strdup(binary); - /* We would also want to check faccessat if we cared about ACLs, * but we don't. */ if (stat(binary, &sb) < 0) { @@ -5021,14 +5028,12 @@ virQEMUCapsLoadFile(const char *filename, const char *binary, void *privData) { - virQEMUCapsPtr qemuCaps = virQEMUCapsNew(); + virQEMUCapsPtr qemuCaps = virQEMUCapsNewBinary(binary); virQEMUCapsCachePrivPtr priv = privData; if (!qemuCaps) return NULL; - qemuCaps->binary = g_strdup(binary); - if (virQEMUCapsLoadCache(priv->hostArch, qemuCaps, filename) < 0) goto error; diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h index 1b2522126c0db8ebf13c5e268914cfaa6172c088..193c19fc81d71fae8b830a7e457d9e9ed3618fbf 100644 --- a/src/qemu/qemu_capabilities.h +++ b/src/qemu/qemu_capabilities.h @@ -544,6 +544,7 @@ typedef virQEMUCaps *virQEMUCapsPtr; G_DEFINE_AUTOPTR_CLEANUP_FUNC(virQEMUCaps, virObjectUnref); virQEMUCapsPtr virQEMUCapsNew(void); +virQEMUCapsPtr virQEMUCapsNewBinary(const char *binary); void virQEMUCapsSet(virQEMUCapsPtr qemuCaps, virQEMUCapsFlags flag) ATTRIBUTE_NONNULL(1);