global: drop `UNLEAK()` annotation

There are two users of `UNLEAK()` left in our codebase: - In "builtin/clone.c", annotating the `repo` variable. That leak has already been fixed though as you can see in the context, where we do know to free `repo_to_free`. - In "builtin/diff.c", to unleak entries of the `blob[]` array. That leak has also been fixed, because the entries we assign to that array come from `rev.pending.objects`, and we do eventually release `rev`. This neatly demonstrates one of the issues with `UNLEAK()`: it is quite easy for the annotation to become stale. A second issue is that its whole intent is to paper over leaks. And while that has been a necessary evil in the past, because Git was leaking left and right, it isn't really much of an issue nowadays where our test suite has no known leaks anymore. Remove the last two users of this macro. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Patrick Steinhardt committed Nov 20, 2024 at 14:39 UTC d91a9db33c53744b3d1034926edda7846442bc9e
2 files changed -2
builtin/clone.c
-1
@@ -1586,7 +1586,6 @@ int cmd_clone(int argc,
1586 free(dir);
1587 free(path);
1588 free(repo_to_free);
1589 - UNLEAK(repo);
1589 junk_mode = JUNK_LEAVE_ALL;
1590
1591 transport_ls_refs_options_release(&transport_ls_refs_options);
builtin/diff.c
-1
@@ -628,6 +628,5 @@ int cmd_diff(int argc,
628 release_revisions(&rev);
629 object_array_clear(&ent);
630 symdiff_release(&sdiff);
631 - UNLEAK(blob);
631 return result;
632 }