06f5f8940c
Generalize the newly added "unused.cocci" rule to find more than just "struct strbuf", let's have it find the same unused patterns for "struct string_list", as well as other code that uses similar-looking *_{release,clear,free}() and {release,clear,free}_*() functions. We're intentionally loose in accepting e.g. a "strbuf_init(&sb)" followed by a "string_list_clear(&sb, 0)". It's assumed that the compiler will catch any such invalid code, i.e. that our constructors/destructors don't take a "void *". See [1] for example of code that would be covered by the "get_worktrees()" part of this rule. We'd still need work that the series is based on (we were passing "worktrees" to a function), but could now do the change in [1] automatically. 1. https://lore.kernel.org/git/Yq6eJFUPPTv%2Fzc0o@coredump.intra.peff.net/ Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
83 lines
1.7 KiB
C
83 lines
1.7 KiB
C
void test_strbuf(void)
|
|
{
|
|
struct strbuf sb1 = STRBUF_INIT;
|
|
struct strbuf sb2 = STRBUF_INIT;
|
|
struct strbuf sb3 = STRBUF_INIT;
|
|
struct strbuf sb4 = STRBUF_INIT;
|
|
struct strbuf sb5;
|
|
struct strbuf sb6 = { 0 };
|
|
struct strbuf sb7 = STRBUF_INIT;
|
|
struct strbuf sb8 = STRBUF_INIT;
|
|
struct strbuf *sp1;
|
|
struct strbuf *sp2;
|
|
struct strbuf *sp3;
|
|
struct strbuf *sp4 = xmalloc(sizeof(struct strbuf));
|
|
struct strbuf *sp5 = xmalloc(sizeof(struct strbuf));
|
|
struct strbuf *sp6 = xmalloc(sizeof(struct strbuf));
|
|
struct strbuf *sp7;
|
|
|
|
strbuf_init(&sb5, 0);
|
|
strbuf_init(sp1, 0);
|
|
strbuf_init(sp2, 0);
|
|
strbuf_init(sp3, 0);
|
|
strbuf_init(sp4, 0);
|
|
strbuf_init(sp5, 0);
|
|
strbuf_init(sp6, 0);
|
|
strbuf_init(sp7, 0);
|
|
sp7 = xmalloc(sizeof(struct strbuf));
|
|
|
|
use_before(&sb3);
|
|
use_as_str("%s", sb7.buf);
|
|
use_as_str("%s", sp1->buf);
|
|
use_as_str("%s", sp6->buf);
|
|
pass_pp(&sp3);
|
|
|
|
strbuf_release(&sb1);
|
|
strbuf_reset(&sb2);
|
|
strbuf_release(&sb3);
|
|
strbuf_release(&sb4);
|
|
strbuf_release(&sb5);
|
|
strbuf_release(&sb6);
|
|
strbuf_release(&sb7);
|
|
strbuf_release(sp1);
|
|
strbuf_release(sp2);
|
|
strbuf_release(sp3);
|
|
strbuf_release(sp4);
|
|
strbuf_release(sp5);
|
|
strbuf_release(sp6);
|
|
strbuf_release(sp7);
|
|
|
|
use_after(&sb4);
|
|
|
|
if (when_strict())
|
|
return;
|
|
strbuf_release(&sb8);
|
|
}
|
|
|
|
void test_other(void)
|
|
{
|
|
struct string_list l = STRING_LIST_INIT_DUP;
|
|
struct strbuf sb = STRBUF_INIT;
|
|
|
|
string_list_clear(&l, 0);
|
|
string_list_clear(&sb, 0);
|
|
}
|
|
|
|
void test_worktrees(void)
|
|
{
|
|
struct worktree **w1 = get_worktrees();
|
|
struct worktree **w2 = get_worktrees();
|
|
struct worktree **w3;
|
|
struct worktree **w4;
|
|
|
|
w3 = get_worktrees();
|
|
w4 = get_worktrees();
|
|
|
|
use_it(w4);
|
|
|
|
free_worktrees(w1);
|
|
free_worktrees(w2);
|
|
free_worktrees(w3);
|
|
free_worktrees(w4);
|
|
}
|