mirror of https://gitee.com/openkylin/libvirt.git
util: scsivhost: use VIR_AUTOPTR for aggregate types
By making use of GNU C's cleanup attribute handled by the VIR_AUTOPTR macro for declaring aggregate pointer variables, majority of the calls to *Free functions can be dropped, which in turn leads to getting rid of most of our cleanup sections. Signed-off-by: Sukrit Bhatnagar <skrtbhtngr@gmail.com> Reviewed-by: Erik Skultety <eskultet@redhat.com>
This commit is contained in:
parent
cef6a2570c
commit
79aea95b2a
|
@ -109,8 +109,7 @@ void
|
||||||
virSCSIVHostDeviceListDel(virSCSIVHostDeviceListPtr list,
|
virSCSIVHostDeviceListDel(virSCSIVHostDeviceListPtr list,
|
||||||
virSCSIVHostDevicePtr dev)
|
virSCSIVHostDevicePtr dev)
|
||||||
{
|
{
|
||||||
virSCSIVHostDevicePtr tmp = virSCSIVHostDeviceListSteal(list, dev);
|
VIR_AUTOPTR(virSCSIVHostDevice) tmp = virSCSIVHostDeviceListSteal(list, dev);
|
||||||
virSCSIVHostDeviceFree(tmp);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -253,7 +252,8 @@ virSCSIVHostDeviceGetPath(virSCSIVHostDevicePtr dev)
|
||||||
virSCSIVHostDevicePtr
|
virSCSIVHostDevicePtr
|
||||||
virSCSIVHostDeviceNew(const char *name)
|
virSCSIVHostDeviceNew(const char *name)
|
||||||
{
|
{
|
||||||
virSCSIVHostDevicePtr dev;
|
VIR_AUTOPTR(virSCSIVHostDevice) dev = NULL;
|
||||||
|
virSCSIVHostDevicePtr ret = NULL;
|
||||||
|
|
||||||
if (VIR_ALLOC(dev) < 0)
|
if (VIR_ALLOC(dev) < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -262,22 +262,18 @@ virSCSIVHostDeviceNew(const char *name)
|
||||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||||
_("dev->name buffer overflow: %s"),
|
_("dev->name buffer overflow: %s"),
|
||||||
name);
|
name);
|
||||||
goto error;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (virAsprintf(&dev->path, "%s/%s",
|
if (virAsprintf(&dev->path, "%s/%s",
|
||||||
SYSFS_VHOST_SCSI_DEVICES, name) < 0)
|
SYSFS_VHOST_SCSI_DEVICES, name) < 0)
|
||||||
goto error;
|
return NULL;
|
||||||
|
|
||||||
VIR_DEBUG("%s: initialized", dev->name);
|
VIR_DEBUG("%s: initialized", dev->name);
|
||||||
|
|
||||||
cleanup:
|
VIR_STEAL_PTR(ret, dev);
|
||||||
return dev;
|
|
||||||
|
|
||||||
error:
|
return ret;
|
||||||
virSCSIVHostDeviceFree(dev);
|
|
||||||
dev = NULL;
|
|
||||||
goto cleanup;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue