
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@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@redhat.com>