summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
Diffstat (limited to 'Python')
-rw-r--r--Python/bltinmodule.c3
-rw-r--r--Python/ceval.c2
-rw-r--r--Python/pythonrun.c3
-rw-r--r--Python/thread_pthread.h11
4 files changed, 5 insertions, 14 deletions
diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index 3604601..10e59c9 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -1589,7 +1589,8 @@ builtin_raw_input(PyObject *self, PyObject *args)
prompt);
Py_XDECREF(po);
if (s == NULL) {
- PyErr_SetNone(PyExc_KeyboardInterrupt);
+ if (!PyErr_Occurred())
+ PyErr_SetNone(PyExc_KeyboardInterrupt);
return NULL;
}
if (*s == '\0') {
diff --git a/Python/ceval.c b/Python/ceval.c
index 0c3a93d..39b7633 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -318,7 +318,7 @@ static volatile int things_to_do = 0;
int
Py_AddPendingCall(int (*func)(void *), void *arg)
{
- static int busy = 0;
+ static volatile int busy = 0;
int i, j;
/* XXX Begin critical section */
/* XXX If you want this to be safe against nested
diff --git a/Python/pythonrun.c b/Python/pythonrun.c
index 113ff2d..d89e5e9 100644
--- a/Python/pythonrun.c
+++ b/Python/pythonrun.c
@@ -1435,7 +1435,8 @@ err_input(perrdetail *err)
msg = "EOL while scanning single-quoted string";
break;
case E_INTR:
- PyErr_SetNone(PyExc_KeyboardInterrupt);
+ if (!PyErr_Occurred())
+ PyErr_SetNone(PyExc_KeyboardInterrupt);
Py_XDECREF(v);
return;
case E_NOMEM:
diff --git a/Python/thread_pthread.h b/Python/thread_pthread.h
index d18d2de..dd1616c 100644
--- a/Python/thread_pthread.h
+++ b/Python/thread_pthread.h
@@ -119,7 +119,6 @@ PyThread_start_new_thread(void (*func)(void *), void *arg)
{
pthread_t th;
int status;
- sigset_t oldmask, newmask;
#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
pthread_attr_t attrs;
#endif
@@ -137,13 +136,6 @@ PyThread_start_new_thread(void (*func)(void *), void *arg)
pthread_attr_setscope(&attrs, PTHREAD_SCOPE_SYSTEM);
#endif
- /* Mask all signals in the current thread before creating the new
- * thread. This causes the new thread to start with all signals
- * blocked.
- */
- sigfillset(&newmask);
- SET_THREAD_SIGMASK(SIG_BLOCK, &newmask, &oldmask);
-
status = pthread_create(&th,
#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
&attrs,
@@ -154,9 +146,6 @@ PyThread_start_new_thread(void (*func)(void *), void *arg)
(void *)arg
);
- /* Restore signal mask for original thread */
- SET_THREAD_SIGMASK(SIG_SETMASK, &oldmask, NULL);
-
#if defined(THREAD_STACK_SIZE) || defined(PTHREAD_SYSTEM_SCHED_SUPPORTED)
pthread_attr_destroy(&attrs);
#endif