| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 991b02d commit d12d0e7
5 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -374,6 +374,8 @@ Querying the error indicator | |||
| 374 | 374 | own a reference to the return value, so you do not need to :c:func:`Py_DECREF` | |
| 375 | 375 | it. | |
| 376 | 376 | ||
| 377 | + The caller must hold the GIL. | ||
| 378 | + | ||
| 377 | 379 | .. note:: | |
| 378 | 380 | ||
| 379 | 381 | Do not compare the return value to a specific exception; use | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -10,7 +10,8 @@ extern "C" { | |||
| 10 | 10 | ||
| 11 | 11 | static inline PyObject* _PyErr_Occurred(PyThreadState *tstate) | |
| 12 | 12 | { | |
| 13 | - return tstate == NULL ? NULL : tstate->curexc_type; | ||
| 13 | + assert(tstate != NULL); | ||
| 14 | + return tstate->curexc_type; | ||
| 14 | 15 | } | |
| 15 | 16 | ||
| 16 | 17 | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -30,12 +30,10 @@ PyObject* | |||
| 30 | 30 | _Py_CheckFunctionResult(PyThreadState *tstate, PyObject *callable, | |
| 31 | 31 | PyObject *result, const char *where) | |
| 32 | 32 | { | |
| 33 | - int err_occurred = (_PyErr_Occurred(tstate) != NULL); | ||
| 34 | - | ||
| 35 | 33 | assert((callable != NULL) ^ (where != NULL)); | |
| 36 | 34 | ||
| 37 | 35 | if (result == NULL) { | |
| 38 | - if (!err_occurred) { | ||
| 36 | + if (!_PyErr_Occurred(tstate)) { | ||
| 39 | 37 | if (callable) | |
| 40 | 38 | _PyErr_Format(tstate, PyExc_SystemError, | |
| 41 | 39 | "%R returned NULL without setting an error", | |
@@ -52,7 +50,7 @@ _Py_CheckFunctionResult(PyThreadState *tstate, PyObject *callable, | |||
| 52 | 50 | } | |
| 53 | 51 | } | |
| 54 | 52 | else { | |
| 55 | - if (err_occurred) { | ||
| 53 | + if (_PyErr_Occurred(tstate)) { | ||
| 56 | 54 | Py_DECREF(result); | |
| 57 | 55 | ||
| 58 | 56 | if (callable) { | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -2313,12 +2313,13 @@ _PyMem_DebugRawRealloc(void *ctx, void *p, size_t nbytes) | |||
| 2313 | 2313 | return data; | |
| 2314 | 2314 | } | |
| 2315 | 2315 | ||
| 2316 | - static void | ||
| 2316 | + static inline void | ||
| 2317 | 2317 | _PyMem_DebugCheckGIL(void) | |
| 2318 | 2318 | { | |
| 2319 | - if (!PyGILState_Check()) | ||
| 2319 | + if (!PyGILState_Check()) { | ||
| 2320 | 2320 | Py_FatalError("Python memory allocator called " | |
| 2321 | 2321 | "without holding the GIL"); | |
| 2322 | + } | ||
| 2322 | 2323 | } | |
| 2323 | 2324 | ||
| 2324 | 2325 | static void * | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -218,6 +218,9 @@ PyErr_SetString(PyObject *exception, const char *string) | |||
| 218 | 218 | PyObject* _Py_HOT_FUNCTION | |
| 219 | 219 | PyErr_Occurred(void) | |
| 220 | 220 | { | |
| 221 | + /* The caller must hold the GIL. */ | ||
| 222 | + assert(PyGILState_Check()); | ||
| 223 | + | ||
| 221 | 224 | PyThreadState *tstate = _PyThreadState_GET(); | |
| 222 | 225 | return _PyErr_Occurred(tstate); | |
| 223 | 226 | } | |
| Back | FazBrowse Home | New Git URL |
0 commit comments