aboutsummaryrefslogtreecommitdiff
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
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.
-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 */