From 819a0645567c452dc92852b36004b51c87154dc7 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Sun, 22 Aug 2010 08:39:49 +0000 Subject: [PATCH] Issue 8403: Don't mask KeyboardInterrupt during peephole operation. --- Python/peephole.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Python/peephole.c b/Python/peephole.c index 7deb02d267a..9d06963e2cf 100644 --- a/Python/peephole.c +++ b/Python/peephole.c @@ -159,13 +159,16 @@ fold_binops_on_constants(unsigned char *codestr, PyObject *consts) return 0; } if (newconst == NULL) { - PyErr_Clear(); + if(!PyErr_ExceptionMatches(PyExc_KeyboardInterrupt)) + PyErr_Clear(); return 0; } size = PyObject_Size(newconst); - if (size == -1) + if (size == -1) { + if (PyErr_ExceptionMatches(PyExc_KeyboardInterrupt)) + return 0; PyErr_Clear(); - else if (size > 20) { + } else if (size > 20) { Py_DECREF(newconst); return 0; } @@ -219,7 +222,8 @@ fold_unaryops_on_constants(unsigned char *codestr, PyObject *consts) return 0; } if (newconst == NULL) { - PyErr_Clear(); + if(!PyErr_ExceptionMatches(PyExc_KeyboardInterrupt)) + PyErr_Clear(); return 0; }