git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 3/3] Initialize variables with values

From
René Scharfe <rene.scharfe@lsrfire.ath.cx>
Date
May 9, 2013, 14:32 UTC
Message-ID
<518BB397.901@lsrfire.ath.cx>
In-Reply-To
<20130509132115.GA3375@elie>
Am 09.05.2013 15:21, schrieb Jonathan Nieder:
Show 22 quoted lines
> Hi,
>
> Sven Strickroth wrote:
>
>> With MSVC initializing a variable with "int a=a" causes a warning about
>> using an uninitialized value.
> [...]
>> --- a/builtin/rev-list.c
>> +++ b/builtin/rev-list.c
>> @@ -338,7 +338,7 @@ int cmd_rev_list(int argc, const char **argv, const char *prefix)
>>   		mark_edges_uninteresting(revs.commits, &revs, show_edge);
>>
>>   	if (bisect_list) {
>> -		int reaches = reaches, all = all;
>> +		int reaches = 0, all = 0;
>
> A correct way to spell this is
>
> 		int reaches, all;
>
> which, as a bonus, lets the compiler warn if they are used
> uninitialized.  Does that provoke warnings?

Only find_bisection() (defined in bisect.c) is used to set these variables in that block. While it sets "all" unconditionally, it doesn't always set "reaches" -- only if it actually finds something. That's still safe because the following code path errors out early if nothing was found before it uses "reaches".

Are there C compilers that can analyse initialization and usage of variables across compilation units like that?

Anyway, initializing the variables to zero makes this code consistent with the second call-site of find_bisection(). Making sure this function sets "reaches" unconditionally as well and dropping the initialization from both places may be even better.

René
Previous: Sven Strickroth
Message 9 of 9 in “MSVC fixes”
  1. 0/3 MSVC fixesSven Strickroth, May 9, 2013
  2. 1/3 poll.h lies in the same folder, so use normal quotes for includeSven Strickroth, May 9, 2013
  3. Sven StrickrothMay 9, 2013
  4. 2/3 mingw.h: Define only if necessarySven Strickroth, May 9, 2013
  5. 3/3 Initialize variables with valuesSven Strickroth, May 9, 2013
  6. Krzysztof MazurMay 9, 2013
  7. Jonathan NiederMay 9, 2013
  8. Sven StrickrothMay 9, 2013
  9. René ScharfeMay 9, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.