From cf59a8a4fe8dd83a069737ff32f1f211f352036c Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Wed, 7 Dec 2016 12:39:24 -0500 Subject: [PATCH] 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 63514e342eb..cc8cd1140c7 100644 --- a/src/bin/psql/print.c +++ b/src/bin/psql/print.c @@ -2220,6 +2220,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