From b45b315855f5523d2aa5c3ad685c2c9530d42229 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Mon, 28 Nov 2005 17:34:23 +0000 Subject: [PATCH] Patch #1350409: Port signal handling to VS 2005. --- Misc/ACKS | 1 + Misc/NEWS | 2 ++ Python/pythonrun.c | 17 +++++++++++++++++ 3 files changed, 20 insertions(+) diff --git a/Misc/ACKS b/Misc/ACKS index 8eebc053f8a..e739534cd97 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -113,6 +113,7 @@ David Chaum Nicolas Chauvat Michael Chermside Albert Chin-A-Young +Adal Chiriliuc Tom Christiansen Vadim Chugunov David Cinege diff --git a/Misc/NEWS b/Misc/NEWS index cb598d5535b..cd947a923ba 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,8 @@ What's New in Python 2.5 alpha 1? Core and builtins ----------------- +- Patch #1350409: Work around signal handling bug in Visual Studio 2005. + - Bug #1281408: Py_BuildValue now works correct even with unsigned longs and long longs. diff --git a/Python/pythonrun.c b/Python/pythonrun.c index ad837d28f62..0b14f8bfbc4 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -1615,6 +1615,23 @@ PyOS_getsig(int sig) return context.sa_handler; #else PyOS_sighandler_t handler; +/* Special signal handling for the secure CRT in Visual Studio 2005 */ +#if defined(_MSC_VER) && _MSC_VER >= 1400 + switch (sig) { + /* Only these signals are valid */ + case SIGINT: + case SIGILL: + case SIGFPE: + case SIGSEGV: + case SIGTERM: + case SIGBREAK: + case SIGABRT: + break; + /* Don't call signal() with other values or it will assert */ + default: + return SIG_ERR; + } +#endif /* _MSC_VER && _MSC_VER >= 1400 */ handler = signal(sig, SIG_IGN); if (handler != SIG_ERR) signal(sig, handler);