diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2005-11-04 18:35:51 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2005-11-04 18:35:51 +0000 |
commit | 6d8476ab3b367e42fa2e6ea809aa27fa265ad9db (patch) | |
tree | d3503f35744d80b608a33e9c3a505fabac585938 | |
parent | 0c1a3f94c63abb48656129e31826c1c287c17307 (diff) | |
download | postgresql-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.c | 11 |
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 */ |