- 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
if ((res = PSQLexec("BEGIN", false)) == NULL)
{
if (pset.on_error_stop)
- return EXIT_USER;
+ {
+ result = EXIT_USER;
+ goto error;
+ }
}
else
PQclear(res);
if ((res = PSQLexec("COMMIT", false)) == NULL)
{
if (pset.on_error_stop)
- return EXIT_USER;
+ {
+ result = EXIT_USER;
+ goto error;
+ }
}
else
PQclear(res);
}
- fclose(fd);
+error:
+ if (fd != stdin)
+ fclose(fd);
+
pset.inputfile = oldfilename;
return result;
}