From: Junio C Hamano Date: Mon, 04 May 2026 01:13:01 GMT Subject: Re: [PATCH] name-rev: fix an 'may be used uninitialized' error Message-ID: In-Reply-To: Ramsay Jones writes: > Today's seen branch fails to build (with DEVELOPER=1), like so: > > CC builtin/name-rev.o > builtin/name-rev.c: In function ‘cmd_format_rev’: > builtin/name-rev.c:885:28: error: ‘commit’ may be used uninitialized [-Werror=maybe-uninitialized] > 885 | if (!commit) { > | ^ > builtin/name-rev.c:867:40: note: ‘commit’ was declared here > 867 | struct commit *commit; > | ^~~~~~ > cc1: all warnings being treated as errors > make: *** [Makefile:2932: builtin/name-rev.o] Error 1 > ... > diff --git a/builtin/name-rev.c b/builtin/name-rev.c > index b941e93834..5b7f7a00e5 100644 > --- a/builtin/name-rev.c > +++ b/builtin/name-rev.c > @@ -882,6 +882,8 @@ int cmd_format_rev(int argc, > peeled = deref_tag(the_repository, object, scratch_buf.buf, 0); > if (peeled && peeled->type == OBJ_COMMIT) > commit = (struct commit *)peeled; > + else > + commit = NULL; > if (!commit) { > fprintf(stderr, "Could not get commit for %s. Skipping.\n", > *argv); Why not if (peeled && peeled->type == OBJ_COMMIT) { commit = (struct commit *)peeled; } else { fprintf(stderr, "... skipping ..."); continue; } get_format_rev(commit, &format_pp, &scratch); or even if (!peeled || peeled->type != OBJ_COMMIT) { fprintf(stderr, "... skipping ..."); continue; } get_format_rev((struct commit *)peeled->type, &format_pp, &scratch); and dropping the variable "struct commit *commit" altogether?