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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user