René Scharfe <l.s.r@xxxxxx> writes: > Initializing to NULL is still the correct thing to do, of course -- > together with removing the conditionals (or at least the negations). So, let's give Pranit a concrete "here is what we want to see squashed in", while you guys discuss peculiarity with various platforms and their system headers, which admittedly is a more interesting tangent ;-) There are early returns with "goto finish" even before _syn variables are first assigned to, so they would need to be initialized to NULL. The other two get their initial values right at the beginning, so they are OK. builtin/bisect--helper.c | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/builtin/bisect--helper.c b/builtin/bisect--helper.c index 8cd6527bd1..6949e8e5ca 100644 --- a/builtin/bisect--helper.c +++ b/builtin/bisect--helper.c @@ -280,7 +280,7 @@ static int bisect_next_check(const struct bisect_terms *terms, int missing_good = 1, missing_bad = 1, retval = 0; char *bad_ref = xstrfmt("refs/bisect/%s", terms->term_bad); char *good_glob = xstrfmt("%s-*", terms->term_good); - char *bad_syn, *good_syn; + char *bad_syn = NULL, *good_syn = NULL; if (ref_exists(bad_ref)) missing_bad = 0; @@ -341,14 +341,10 @@ static int bisect_next_check(const struct bisect_terms *terms, } goto finish; finish: - if (!bad_ref) - free(bad_ref); - if (!good_glob) - free(good_glob); - if (!bad_syn) - free(bad_syn); - if (!good_syn) - free(good_syn); + free(bad_ref); + free(good_glob); + free(bad_syn); + free(good_syn); return retval; }