By making use of the GCC's __attribute__((cleanup)) handled by VIR_AUTOFREE
macro, majority of the VIR_FREE calls can be dropped, which in turn leads to
getting rid of most of our cleanup sections.
---
 src/util/vireventpoll.c | 7 ++-----
 1 file changed, 2 insertions(+), 5 deletions(-)

diff --git a/src/util/vireventpoll.c b/src/util/vireventpoll.c
index 81ecab4..13d278d 100644
--- a/src/util/vireventpoll.c
+++ b/src/util/vireventpoll.c
@@ -618,7 +618,7 @@ static void virEventPollCleanupHandles(void)
  */
 int virEventPollRunOnce(void)
 {
-    struct pollfd *fds = NULL;
+    VIR_AUTOFREE(struct pollfd *) fds = NULL;
     int ret, timeout, nfds;
 
     virMutexLock(&eventLoop.lock);
@@ -645,7 +645,7 @@ int virEventPollRunOnce(void)
             goto retry;
         virReportSystemError(errno, "%s",
                              _("Unable to poll on file handles"));
-        goto error_unlocked;
+        return -1;
     }
     EVENT_DEBUG("Poll got %d event(s)", ret);
 
@@ -662,13 +662,10 @@ int virEventPollRunOnce(void)
 
     eventLoop.running = 0;
     virMutexUnlock(&eventLoop.lock);
-    VIR_FREE(fds);
     return 0;
 
  error:
     virMutexUnlock(&eventLoop.lock);
- error_unlocked:
-    VIR_FREE(fds);
     return -1;
 }
 
-- 
1.8.3.1

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to