In the past we had to declare @cfg and then explicitly unref it.
But now, with glib we can use g_autoptr() which will do the unref
automatically and thus is more bulletproof.
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Laine Stump <laine@redhat.com>
* being released while they use it.
*
* eg
- * qemuDriverLock(driver);
- * virQEMUDriverConfigPtr cfg = virObjectRef(driver->config);
- * qemuDriverUnlock(driver);
+ * g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
*
* ...do stuff with 'cfg'..
- *
- * virObjectUnref(cfg);
*/
struct _virQEMUDriverConfig {
virObject parent;
virDomainHostdevDefPtr *hostdevs,
int nhostdevs)
{
- virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
+ g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
const char *oldStateDir = cfg->stateDir;
virHostdevManagerPtr hostdev_mgr = driver->hostdevMgr;
virHostdevReAttachPCIDevices(hostdev_mgr, QEMU_DRIVER_NAME, name,
hostdevs, nhostdevs, oldStateDir);
-
- virObjectUnref(cfg);
}
void
{
int ret = -1;
char *res_ifname = NULL;
- virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
+ g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
unsigned int macvlan_create_flags = VIR_NETDEV_MACVLAN_CREATE_WITH_TAP;
if (qemuInterfaceIsVnetCompatModel(net))
while (tapfdSize--)
VIR_FORCE_CLOSE(tapfd[tapfdSize]);
}
- virObjectUnref(cfg);
return ret;
}
int ret = -1;
unsigned int tap_create_flags = VIR_NETDEV_TAP_CREATE_IFUP;
bool template_ifname = false;
- virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
+ g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
const char *tunpath = "/dev/net/tun";
const char *auditdev = tunpath;
if (template_ifname)
VIR_FREE(net->ifname);
}
- virObjectUnref(cfg);
return ret;
}
int ret = -1;
unsigned int tap_create_flags = VIR_NETDEV_TAP_CREATE_IFUP;
bool template_ifname = false;
- virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
+ g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
const char *tunpath = "/dev/net/tun";
if (net->backend.tap) {
if (template_ifname)
VIR_FREE(net->ifname);
}
- virObjectUnref(cfg);
return ret;
}
int cancelled)
{
qemuMigrationJobPhase phase;
- virQEMUDriverConfigPtr cfg = NULL;
+ g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
int ret = -1;
- cfg = virQEMUDriverGetConfig(driver);
-
if (!qemuMigrationJobIsActive(vm, QEMU_ASYNC_JOB_MIGRATION_OUT))
goto cleanup;
cleanup:
virDomainObjEndAPI(&vm);
- virObjectUnref(cfg);
return ret;
}
{
int ret = -1;
qemuMigrationSpec spec;
- virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
+ g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
int fds[2] = { -1, -1 };
VIR_DEBUG("driver=%p, vm=%p, st=%p, cookiein=%s, cookieinlen=%d, "
VIR_FORCE_CLOSE(spec.dest.fd.qemu);
VIR_FORCE_CLOSE(spec.dest.fd.local);
- virObjectUnref(cfg);
return ret;
}
{
qemuMigrationCookieGraphicsPtr mig = NULL;
const char *listenAddr;
- virQEMUDriverConfigPtr cfg = virQEMUDriverGetConfig(driver);
+ g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver);
if (VIR_ALLOC(mig) < 0)
goto error;
mig->listen = g_strdup(listenAddr);
- virObjectUnref(cfg);
return mig;
error:
qemuMigrationCookieGraphicsFree(mig);
- virObjectUnref(cfg);
return NULL;
}
#endif
#if WITH_QEMU
- virQEMUDriverConfigPtr cfg = virQEMUDriverConfigNew(false, NULL);
+ g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverConfigNew(false, NULL);
if (!cfg)
return EXIT_FAILURE;
* file has been added, run "VIR_TEST_REGENERATE_OUTPUT=1 ninja test".
*/
- virObjectUnref(cfg);
-
virFileWrapperClearPrefixes();
#endif /* WITH_QEMU */
{
int ret = 0;
g_autofree char *fakerootdir = NULL;
- virQEMUDriverConfigPtr cfg = NULL;
+ g_autoptr(virQEMUDriverConfig) cfg = NULL;
g_autoptr(virHashTable) capslatest = NULL;
g_autoptr(virConnect) conn = NULL;