]> git.ipfire.org Git - thirdparty/postgresql.git/commitdiff
Ensure that we only create one ConsoleCtrlHandler per psql process,
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 4 Nov 2005 18:35:51 +0000 (18:35 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 4 Nov 2005 18:35:51 +0000 (18:35 +0000)
so as to avoid performance issues and possible ultimate crash on long
psql scripts.  Per Merlin Moncure.

src/bin/psql/common.c

index 1c26eb6b84ed7f72506a3b7be475a57aa76129f3..c98322ca4c0e353edb5a175a0cffe592a3657b11 100644 (file)
@@ -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 */