summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane2005-11-04 18:35:51 +0000
committerTom Lane2005-11-04 18:35:51 +0000
commit6d8476ab3b367e42fa2e6ea809aa27fa265ad9db (patch)
treed3503f35744d80b608a33e9c3a505fabac585938
parent0c1a3f94c63abb48656129e31826c1c287c17307 (diff)
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.
-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 */