Commit 1fea0c05 authored by Robert Haas's avatar Robert Haas

Minor fixups for psql's process_file() function.

- Avoid closing stdin, since we didn't open it.  Previously multiple
inclusions of stdin would be terminated with a single quit, now a separate
quit is needed for each invocation. Previous behavior also accessed stdin
after it was fclose()d, which is undefined behavior per ANSI C.

- Properly restore pset.inputfile, since the caller expects to be able
to free that memory.

Marti Raudsepp
parent 5c38782c
......@@ -1987,7 +1987,10 @@ process_file(char *filename, bool single_txn)
if ((res = PSQLexec("BEGIN", false)) == NULL)
{
if (pset.on_error_stop)
return EXIT_USER;
{
result = EXIT_USER;
goto error;
}
}
else
PQclear(res);
......@@ -2000,13 +2003,19 @@ process_file(char *filename, bool single_txn)
if ((res = PSQLexec("COMMIT", false)) == NULL)
{
if (pset.on_error_stop)
return EXIT_USER;
{
result = EXIT_USER;
goto error;
}
}
else
PQclear(res);
}
error:
if (fd != stdin)
fclose(fd);
pset.inputfile = oldfilename;
return result;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment