postgres.git / summary / log / commit / refs
commit 433e65c2bd907723a5d93b3f2ff0bdbc77a0b625
Author: Tom Lane <tgl@sss.pgh.pa.us>
Date: Wed Dec 07 17:39:24 2016 +0000
Restore psql's SIGPIPE setting if popen() fails.
Ancient oversight in PageOutput(): if popen() fails, we'd better reset
the SIGPIPE handler before returning stdout, because ClosePager() won't.
Noticed while fixing the empty-PAGER issue.
src/bin/psql/print.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/src/bin/psql/print.c b/src/bin/psql/print.c
index 85ac76b8fe3..b48fb8dd7ff 100644
--- a/src/bin/psql/print.c
+++ b/src/bin/psql/print.c
@@ -2217,6 +2217,10 @@ PageOutput(int lines, unsigned short int pager)
pagerpipe = popen(pagerprog, "w");
if (pagerpipe)
return pagerpipe;
+ /* if popen fails, silently proceed without pager */
+#ifndef WIN32
+ pqsignal(SIGPIPE, SIG_DFL);
+#endif
#ifdef TIOCGWINSZ
}
#endif
[parent: 82eb5c514473]