mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-01-18 18:44:06 +08:00
Fix problems with coredumps due to ^C when longjmp buffer isn't valid.
Now, we will only catch ^C at times when it is valid.
This commit is contained in:
parent
b32cac8055
commit
a062473696
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright 2000 by PostgreSQL Global Development Group
|
||||
*
|
||||
* $Header: /cvsroot/pgsql/src/bin/psql/mainloop.c,v 1.37 2001/03/22 04:00:21 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/bin/psql/mainloop.c,v 1.38 2001/03/23 00:36:38 tgl Exp $
|
||||
*/
|
||||
#include "postgres_fe.h"
|
||||
#include "mainloop.h"
|
||||
@ -137,6 +137,10 @@ MainLoop(FILE *source)
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* establish the control-C handler only after main_loop_jmp is ready */
|
||||
pqsignal(SIGINT, handle_sigint); /* control-C => cancel */
|
||||
|
||||
#endif /* not WIN32 */
|
||||
|
||||
if (slashCmdStatus == CMD_NEWEDIT)
|
||||
@ -546,7 +550,8 @@ MainLoop(FILE *source)
|
||||
/*
|
||||
* Process query at the end of file without a semicolon
|
||||
*/
|
||||
if (query_buf->len > 0 && !pset.cur_cmd_interactive)
|
||||
if (query_buf->len > 0 && !pset.cur_cmd_interactive &&
|
||||
successResult == EXIT_SUCCESS)
|
||||
{
|
||||
success = SendQuery(query_buf->data);
|
||||
|
||||
@ -556,6 +561,14 @@ MainLoop(FILE *source)
|
||||
successResult = EXIT_BADCONN;
|
||||
}
|
||||
|
||||
/*
|
||||
* Reset SIGINT handler because main_loop_jmp will be invalid as soon
|
||||
* as we exit this routine. If there is an outer MainLoop instance,
|
||||
* it will re-enable ^C catching as soon as it gets back to the top
|
||||
* of its loop and resets main_loop_jmp to point to itself.
|
||||
*/
|
||||
pqsignal(SIGINT, SIG_DFL);
|
||||
|
||||
destroyPQExpBuffer(query_buf);
|
||||
destroyPQExpBuffer(previous_buf);
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
*
|
||||
* Copyright 2000 by PostgreSQL Global Development Group
|
||||
*
|
||||
* $Header: /cvsroot/pgsql/src/bin/psql/startup.c,v 1.45 2001/03/22 04:00:23 momjian Exp $
|
||||
* $Header: /cvsroot/pgsql/src/bin/psql/startup.c,v 1.46 2001/03/23 00:36:38 tgl Exp $
|
||||
*/
|
||||
#include "postgres_fe.h"
|
||||
|
||||
@ -223,10 +223,6 @@ main(int argc, char *argv[])
|
||||
SetVariable(pset.vars, "PORT", PQport(pset.db));
|
||||
SetVariable(pset.vars, "ENCODING", pg_encoding_to_char(pset.encoding));
|
||||
|
||||
#ifndef WIN32
|
||||
pqsignal(SIGINT, handle_sigint); /* control-C => cancel */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Now find something to do
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user