mirror of
https://github.com/python/cpython.git
synced 2025-07-09 20:35:26 +00:00
* bltinmodule.c: added built-in function cmp(a, b)
* flmodule.c: added {do,check}_only_forms to fl's list of functions; and don't print a message when an unknown object is returned. * pythonrun.c: catch SIGHUP and SIGTERM to do essential cleanup. * Made jpegmodule.c smaller by using getargs() and mkvalue() consistently. * Increased parser stack size to 500 in parser.h. * Implemented custom allocation of stack frames to frameobject.c and added dynamic stack overflow checks (value stack only) to ceval.c. (There seems to be a bug left: sometimes stack traces don't make sense.)
This commit is contained in:
parent
2db91358de
commit
a9e7dc1081
7 changed files with 150 additions and 19 deletions
|
@ -38,10 +38,21 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
|||
#include "pythonrun.h"
|
||||
#include "import.h"
|
||||
|
||||
#ifdef unix
|
||||
#define HANDLE_SIGNALS
|
||||
#endif
|
||||
|
||||
#ifdef HANDLE_SIGNALS
|
||||
#include <signal.h>
|
||||
#include "sigtype.h"
|
||||
#endif
|
||||
|
||||
extern char *getpythonpath();
|
||||
|
||||
extern grammar gram; /* From graminit.c */
|
||||
|
||||
void initsigs(); /* Forward */
|
||||
|
||||
int debugging; /* Needed by parser.c */
|
||||
int verbose; /* Needed by import.c */
|
||||
|
||||
|
@ -67,10 +78,10 @@ initall()
|
|||
initsys();
|
||||
|
||||
initcalls(); /* Configuration-dependent initializations */
|
||||
|
||||
initintr(); /* For intrcheck() */
|
||||
|
||||
setpythonpath(getpythonpath());
|
||||
|
||||
initsigs(); /* Signal handling stuff, including initintr() */
|
||||
}
|
||||
|
||||
/* Parse input from a file and execute it */
|
||||
|
@ -372,8 +383,7 @@ extern int threads_started;
|
|||
#endif
|
||||
|
||||
void
|
||||
goaway(sts)
|
||||
int sts;
|
||||
cleanup()
|
||||
{
|
||||
object *exitfunc = sysget("exitfunc");
|
||||
|
||||
|
@ -395,6 +405,13 @@ goaway(sts)
|
|||
}
|
||||
|
||||
flushline();
|
||||
}
|
||||
|
||||
void
|
||||
goaway(sts)
|
||||
int sts;
|
||||
{
|
||||
cleanup();
|
||||
|
||||
#ifdef USE_THREAD
|
||||
|
||||
|
@ -433,6 +450,30 @@ goaway(sts)
|
|||
/*NOTREACHED*/
|
||||
}
|
||||
|
||||
#ifdef HANDLE_SIGNALS
|
||||
SIGTYPE
|
||||
sighandler(sig)
|
||||
int sig;
|
||||
{
|
||||
signal(sig, SIG_DFL); /* Don't catch recursive signals */
|
||||
cleanup(); /* Do essential clean-up */
|
||||
kill(getpid(), sig); /* Pretend the signal killed us */
|
||||
/*NOTREACHED*/
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
initsigs()
|
||||
{
|
||||
initintr();
|
||||
#ifdef HANDLE_SIGNALS
|
||||
if (signal(SIGHUP, SIG_IGN) != SIG_IGN)
|
||||
signal(SIGHUP, sighandler);
|
||||
if (signal(SIGTERM, SIG_IGN) != SIG_IGN)
|
||||
signal(SIGTERM, sighandler);
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef TRACE_REFS
|
||||
/* Ask a yes/no question */
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue