aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2005-11-04 18:35:51 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2005-11-04 18:35:51 +0000
commit6d8476ab3b367e42fa2e6ea809aa27fa265ad9db (patch)
treed3503f35744d80b608a33e9c3a505fabac585938 /src
parent0c1a3f94c63abb48656129e31826c1c287c17307 (diff)
downloadpostgresql-6d8476ab3b367e42fa2e6ea809aa27fa265ad9db.tar.gz
postgresql-6d8476ab3b367e42fa2e6ea809aa27fa265ad9db.zip
Ensure that we only create one ConsoleCtrlHandler per psql process,
so as to avoid performance issues and possible ultimate crash on long psql scripts. Per Merlin Moncure.
Diffstat (limited to 'src')
-rw-r--r--src/bin/psql/common.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c
index 1c26eb6b84e..c98322ca4c0 100644
--- a/src/bin/psql/common.c
+++ b/src/bin/psql/common.c
@@ -3,7 +3,7 @@
*
* Copyright (c) 2000-2005, PostgreSQL Global Development Group
*
- * $PostgreSQL: pgsql/src/bin/psql/common.c,v 1.95 2005/01/01 05:43:08 momjian Exp $
+ * $PostgreSQL: pgsql/src/bin/psql/common.c,v 1.95.4.1 2005/11/04 18:35:51 tgl Exp $
*/
#include "postgres_fe.h"
#include "common.h"
@@ -315,7 +315,14 @@ setup_win32_locks(void)
void
setup_cancel_handler(void)
{
- SetConsoleCtrlHandler(consoleHandler, TRUE);
+ static bool done = false;
+
+ /* only need one handler per process */
+ if (!done)
+ {
+ SetConsoleCtrlHandler(consoleHandler, TRUE);
+ done = true;
+ }
}
#endif /* WIN32 */