1
0
mirror of https://github.com/postgres/postgres.git synced 2026-10-23 13:29:09 +03:00

Silence uninitialized variable warning with some compiler versions

The first "if (difffile)" block initializes the startpos variable, and
the second "if (difffile)" block reads it. The second if-condition can
only be true when the first one was true, so the startpos variable is
always initialized when it's used. However, the compiler might not be
able to deduce that, and warn about startpos being used uninitialized.

To silence the warning, rearrange the if-checks. Also, bail out if the
diff file cannot be opened, instead of ignoring it silently.

Author: Mikhail Litsarev <m.litsarev@postgrespro.ru>
Reviewed-by; Ewan Young <kdbase.hack@gmail.com>
Discussion: https://www.postgresql.org/message-id/ee06f058c626cd37babd8c81579ffb1e@postgrespro.ru
This commit is contained in:
Heikki Linnakangas
2026-06-17 09:00:49 +03:00
parent 1f7dfe8c8e
commit f29299c42b

View File

@@ -1534,31 +1534,33 @@ results_differ(const char *testname, const char *resultsfile, const char *defaul
*/
difffile = fopen(difffilename, "a");
if (difffile)
{
startpos = ftell(difffile);
if (!difffile)
bail("could not open file \"%s\" for writing: %m", difffilename);
startpos = ftell(difffile);
/* Write diff header */
fprintf(difffile,
"diff %s %s %s\n",
pretty_diff_opts, best_expect_file, resultsfile);
fclose(difffile);
/* Write diff header */
fprintf(difffile,
"diff %s %s %s\n",
pretty_diff_opts, best_expect_file, resultsfile);
fclose(difffile);
/* Run diff */
snprintf(cmd, sizeof(cmd),
"diff %s \"%s\" \"%s\" >> \"%s\"",
pretty_diff_opts, best_expect_file, resultsfile, difffilename);
run_diff(cmd, difffilename);
/* Run diff */
snprintf(cmd, sizeof(cmd),
"diff %s \"%s\" \"%s\" >> \"%s\"",
pretty_diff_opts, best_expect_file, resultsfile, difffilename);
run_diff(cmd, difffilename);
/*
* Reopen the file for reading to emit the diff as TAP diagnostics. We
* can't keep the file open while diff appends to it, because on
* Windows the file lock prevents diff from writing.
*/
difffile = fopen(difffilename, "r");
}
if (difffile)
/*
* Emit the diff output as TAP diagnostics
*
* Reopen the file for reading. We can't keep the file open while diff
* appends to it, because on Windows the file lock prevents diff from
* writing.
*/
difffile = fopen(difffilename, "r");
if (!difffile)
bail("could not open file \"%s\" for reading: %m", difffilename);
else
{
/*
* In case of a crash the diff can be huge and all of the subsequent