DIR *dh is being re-used each time through the for loop of this function, so it must be closed and then re-opened, which means we can't convert it to g_autoptr. By moving the definition of dh inside the for loop, we make it possible to trivially convert to g_autoptr (which will happen in a subsequent patch) NB: VIR_DIR_CLOSE() is already called at the bottom of the for loop, so removing the VIR_DIR_CLOSE() at the end of the function is *not* creating a leak of a DIR*! Signed-off-by: Laine Stump <laine@xxxxxxxxxx> --- src/util/vircgroupv1.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/util/vircgroupv1.c b/src/util/vircgroupv1.c index 91c1c4d4b1..67b35c1b9a 100644 --- a/src/util/vircgroupv1.c +++ b/src/util/vircgroupv1.c @@ -875,12 +875,12 @@ virCgroupV1SetOwner(virCgroupPtr cgroup, { int ret = -1; size_t i; - DIR *dh = NULL; int direrr; for (i = 0; i < VIR_CGROUP_CONTROLLER_LAST; i++) { g_autofree char *base = NULL; struct dirent *de; + DIR *dh = NULL; if (!((1 << i) & controllers)) continue; @@ -922,7 +922,6 @@ virCgroupV1SetOwner(virCgroupPtr cgroup, ret = 0; cleanup: - VIR_DIR_CLOSE(dh); return ret; } -- 2.26.2