On Sat, Jul 28, 2018 at 11:31:44PM +0530, Sukrit Bhatnagar wrote:
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(a)gmail.com>
---
src/util/virprocess.c | 49 ++++++++++++++++++++++++-------------------------
1 file changed, 24 insertions(+), 25 deletions(-)
@@ -475,7 +473,11 @@ virBitmapPtr
virProcessGetAffinity(pid_t pid)
{
size_t i;
+# ifdef CPU_ALLOC
cpu_set_t *mask;
+# else
+ VIR_AUTOFREE(cpu_set_t *) mask = NULL;
+# endif
size_t masklen;
size_t ncpus;
virBitmapPtr ret = NULL;
@@ -504,11 +506,20 @@ virProcessGetAffinity(pid_t pid)
if (sched_getaffinity(pid, masklen, mask) < 0) {
virReportSystemError(errno,
_("cannot get CPU affinity of process %d"),
pid);
+# ifdef CPU_ALLOC
goto cleanup;
+# else
+ return ret;
+# endif
}
if (!(ret = virBitmapNew(ncpus)))
- goto cleanup;
+# ifdef CPU_ALLOC
+
+ goto cleanup;
+# else
+ return ret;
+# endif
for (i = 0; i < ncpus; i++) {
# ifdef CPU_ALLOC
@@ -522,11 +533,7 @@ virProcessGetAffinity(pid_t pid)
}
cleanup:
-# ifdef CPU_ALLOC
CPU_FREE(mask);
-# else
- VIR_FREE(mask);
-# endif
So instead of 1 conditional compile-time block we'd end up with 3, I don't
think that's a good idea, better leave it as is. We could potentially
conditionally define VIR_DEFINE_AUTOPTR_FUNC handling these both cases, however
I don't particularly like that approach either, so let's leave this hunk out.
To the rest:
Reviewed-by: Erik Skultety <eskultet(a)redhat.com>