]> git.ipfire.org Git - thirdparty/git.git/commitdiff
Merge branch 'ah/plugleaks'
authorJunio C Hamano <gitster@pobox.com>
Fri, 7 May 2021 03:47:41 +0000 (12:47 +0900)
committerJunio C Hamano <gitster@pobox.com>
Fri, 7 May 2021 03:47:41 +0000 (12:47 +0900)
Plug various leans reported by LSAN.

* ah/plugleaks:
  builtin/rm: avoid leaking pathspec and seen
  builtin/rebase: release git_format_patch_opt too
  builtin/for-each-ref: free filter and UNLEAK sorting.
  mailinfo: also free strbuf lists when clearing mailinfo
  builtin/checkout: clear pending objects after diffing
  builtin/check-ignore: clear_pathspec before returning
  builtin/bugreport: don't leak prefixed filename
  branch: FREE_AND_NULL instead of NULL'ing real_ref
  bloom: clear each bloom_key after use
  ls-files: free max_prefix when done
  wt-status: fix multiple small leaks
  revision: free remainder of old commit list in limit_list

1  2 
bloom.c
branch.c
builtin/check-ignore.c
builtin/checkout.c
builtin/for-each-ref.c
builtin/ls-files.c
builtin/rebase.c
builtin/rm.c
revision.c
wt-status.c

diff --cc bloom.c
Simple merge
diff --cc branch.c
Simple merge
Simple merge
Simple merge
index b529228c62397739d3a514df3910c12fe6668d52,84efb71f82fc0b455591f6261453f1b72cd61dd9..89cb6307d46faea7082ca834472f0285b2053b0c
@@@ -82,17 -80,11 +82,20 @@@ int cmd_for_each_ref(int argc, const ch
  
        if (!maxcount || array.nr < maxcount)
                maxcount = array.nr;
 -      for (i = 0; i < maxcount; i++)
 -              show_ref_array_item(array.items[i], &format);
 +      for (i = 0; i < maxcount; i++) {
 +              strbuf_reset(&err);
 +              strbuf_reset(&output);
 +              if (format_ref_array_item(array.items[i], &format, &output, &err))
 +                      die("%s", err.buf);
 +              fwrite(output.buf, 1, output.len, stdout);
 +              putchar('\n');
 +      }
 +
 +      strbuf_release(&err);
 +      strbuf_release(&output);
        ref_array_clear(&array);
+       free_commit_list(filter.with_commit);
+       free_commit_list(filter.no_commit);
+       UNLEAK(sorting);
        return 0;
  }
Simple merge
Simple merge
diff --cc builtin/rm.c
index d89f241e97bf507816f79becbd990fae732c17b6,2927678d37b6a583d059acebd78fa6c1a4e61407..8a24c715e02bab24098af5f3e354c631ee9abf3c
@@@ -332,16 -324,11 +332,18 @@@ int cmd_rm(int argc, const char **argv
                                    *original ? original : ".");
                }
  
 +              if (only_match_skip_worktree.nr) {
 +                      advise_on_updating_sparse_paths(&only_match_skip_worktree);
 +                      ret = 1;
 +              }
 +              free(skip_worktree_seen);
 +              string_list_clear(&only_match_skip_worktree, 0);
 +
                if (!seen_any)
 -                      exit(0);
 +                      exit(ret);
        }
+       clear_pathspec(&pathspec);
+       free(seen);
  
        if (!index_only)
                submodules_absorb_gitdir_if_needed();
diff --cc revision.c
Simple merge
diff --cc wt-status.c
Simple merge