]> granicus.if.org Git - git/commitdiff
commit-reach: fix memory and flag leaks
authorDerrick Stolee <dstolee@microsoft.com>
Fri, 21 Sep 2018 15:05:27 +0000 (08:05 -0700)
committerJunio C Hamano <gitster@pobox.com>
Fri, 21 Sep 2018 18:36:29 +0000 (11:36 -0700)
The can_all_from_reach_with_flag() method uses 'assign_flag' as a
value we can use to mark objects temporarily during our commit walk.
The intent is that these flags are removed from all objects before
returning. However, this is not the case.

The 'from' array could also contain objects that are not commits, and
we mark those objects with 'assign_flag'. Add a loop to the 'cleanup'
section that removes these markers.

Also, we forgot to free() the memory for 'list', so add that to the
'cleanup' section.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
commit-reach.c

index e748414d04b4f810e4e1c5647c5f53fb072ffb81..5a845440a996a1f56f9c92d1ac86b96a727cbe8d 100644 (file)
@@ -626,6 +626,11 @@ cleanup:
                clear_commit_marks(list[i], RESULT);
                clear_commit_marks(list[i], assign_flag);
        }
+       free(list);
+
+       for (i = 0; i < from->nr; i++)
+               from->objects[i].item->flags &= ~assign_flag;
+
        return result;
 }