[libvirt] [PATCH v2 24/41] util: usb: use VIR_AUTOFREE instead of VIR_FREE for scalar types

Sukrit Bhatnagar skrtbhtngr at gmail.com
Tue Jul 24 15:52:25 UTC 2018


By making use of GNU C's cleanup attribute handled by the
VIR_AUTOFREE macro for declaring scalar variables, majority
of the VIR_FREE calls can be dropped, which in turn leads to
getting rid of most of our cleanup sections.

Signed-off-by: Sukrit Bhatnagar <skrtbhtngr at gmail.com>
Reviewed-by: Erik Skultety <eskultet at redhat.com>
---
 src/util/virusb.c | 18 +++++++-----------
 1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/src/util/virusb.c b/src/util/virusb.c
index 90f947b..47b407b 100644
--- a/src/util/virusb.c
+++ b/src/util/virusb.c
@@ -90,29 +90,25 @@ VIR_ONCE_GLOBAL_INIT(virUSB)
 static int virUSBSysReadFile(const char *f_name, const char *d_name,
                              int base, unsigned int *value)
 {
-    int ret = -1, tmp;
-    char *buf = NULL;
-    char *filename = NULL;
+    int tmp;
+    VIR_AUTOFREE(char *) buf = NULL;
+    VIR_AUTOFREE(char *) filename = NULL;
     char *ignore = NULL;
 
     tmp = virAsprintf(&filename, USB_SYSFS "/devices/%s/%s", d_name, f_name);
     if (tmp < 0)
-        goto cleanup;
+        return -1;
 
     if (virFileReadAll(filename, 1024, &buf) < 0)
-        goto cleanup;
+        return -1;
 
     if (virStrToLong_ui(buf, &ignore, base, value) < 0) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("Could not parse usb file %s"), filename);
-        goto cleanup;
+        return -1;
     }
 
-    ret = 0;
- cleanup:
-    VIR_FREE(filename);
-    VIR_FREE(buf);
-    return ret;
+    return 0;
 }
 
 static virUSBDeviceListPtr
-- 
1.8.3.1




More information about the libvir-list mailing list