diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2005-11-04 18:35:40 +0000 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2005-11-04 18:35:40 +0000 |
commit | af331e2526f1dbb23926877a324e4723879c2246 (patch) | |
tree | c9ad531a7526f42900940554140c7e53faf1d817 | |
parent | 081ed99b1e92cea0b964c0cfe65c4704540940a8 (diff) | |
download | postgresql-af331e2526f1dbb23926877a324e4723879c2246.tar.gz postgresql-af331e2526f1dbb23926877a324e4723879c2246.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 | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/bin/psql/common.c b/src/bin/psql/common.c index 1b01a97d885..bddbd7e539f 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.109 2005/10/27 13:34:47 momjian Exp $ + * $PostgreSQL: pgsql/src/bin/psql/common.c,v 1.110 2005/11/04 18:35:40 tgl Exp $ */ #include "postgres_fe.h" #include "common.h" @@ -268,6 +268,7 @@ handle_sigint(SIGNAL_ARGS) } errno = save_errno; /* just in case the write changed it */ } + #else /* WIN32 */ static BOOL WINAPI @@ -313,8 +314,16 @@ 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 */ |