summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2013-10-07 18:38:51 (GMT)
committerAntoine Pitrou <solipsis@pitrou.net>2013-10-07 18:38:51 (GMT)
commit59c900d3bf85965efe7edc1a3bb7e9b49512f6ab (patch)
treec35182a257ea7756a27e7b67c6b26ee55c7daf3e
parentc377fe2b968f8e1a5f276063a41cd4df75d4af2f (diff)
downloadcpython-59c900d3bf85965efe7edc1a3bb7e9b49512f6ab.zip
cpython-59c900d3bf85965efe7edc1a3bb7e9b49512f6ab.tar.gz
cpython-59c900d3bf85965efe7edc1a3bb7e9b49512f6ab.tar.bz2
Fix macro expansion of _PyErr_OCCURRED(), and make sure to use it in at least one place so as to avoid regressions.
-rw-r--r--Include/pyerrors.h2
-rw-r--r--Misc/NEWS3
-rw-r--r--Python/ceval.c4
3 files changed, 6 insertions, 3 deletions
diff --git a/Include/pyerrors.h b/Include/pyerrors.h
index af37410..e385123 100644
--- a/Include/pyerrors.h
+++ b/Include/pyerrors.h
@@ -100,7 +100,7 @@ PyAPI_FUNC(void) Py_FatalError(const char *message) _Py_NO_RETURN;
#if defined(Py_DEBUG) || defined(Py_LIMITED_API)
#define _PyErr_OCCURRED() PyErr_Occurred()
#else
-#define _PyErr_OCCURRED() (_PyThreadState_Current->curexc_type)
+#define _PyErr_OCCURRED() (PyThreadState_GET()->curexc_type)
#endif
/* Error testing and normalization */
diff --git a/Misc/NEWS b/Misc/NEWS
index 5fa7695..d7d5644 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -12,6 +12,9 @@ What's New in Python 3.3.3 release candidate 1?
Core and Builtins
-----------------
+- Fix macro expansion of _PyErr_OCCURRED(), and make sure to use it in at
+ least one place so as to avoid regressions.
+
- Issue #19014: memoryview.cast() is now allowed on zero-length views.
- Issue #19098: Prevent overflow in the compiler when the recursion limit is set
diff --git a/Python/ceval.c b/Python/ceval.c
index d28ae2b..faee5cd 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -2083,7 +2083,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
}
else {
x = PyObject_GetItem(v, w);
- if (x == NULL && PyErr_Occurred()) {
+ if (x == NULL && _PyErr_OCCURRED()) {
if (!PyErr_ExceptionMatches(
PyExc_KeyError))
break;
@@ -2127,7 +2127,7 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
(PyDictObject *)f->f_builtins,
w);
if (x == NULL) {
- if (!PyErr_Occurred())
+ if (!_PyErr_OCCURRED())
format_exc_check_arg(PyExc_NameError,
GLOBAL_NAME_ERROR_MSG, w);
break;