MCPcopy Create free account
hub / github.com/fabioz/PyDev.Debugger / __Pyx_GetException

Function __Pyx_GetException

_pydevd_frame_eval/pydevd_frame_evaluator.c:19978–20075  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

19976static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb)
19977#else
19978static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb)
19979#endif
19980{
19981 PyObject *local_type = NULL, *local_value, *local_tb = NULL;
19982#if CYTHON_FAST_THREAD_STATE
19983 PyObject *tmp_type, *tmp_value, *tmp_tb;
19984 #if PY_VERSION_HEX >= 0x030C0000
19985 local_value = tstate->current_exception;
19986 tstate->current_exception = 0;
19987 #else
19988 local_type = tstate->curexc_type;
19989 local_value = tstate->curexc_value;
19990 local_tb = tstate->curexc_traceback;
19991 tstate->curexc_type = 0;
19992 tstate->curexc_value = 0;
19993 tstate->curexc_traceback = 0;
19994 #endif
19995#elif __PYX_LIMITED_VERSION_HEX > 0x030C0000
19996 local_value = PyErr_GetRaisedException();
19997#else
19998 PyErr_Fetch(&local_type, &local_value, &local_tb);
19999#endif
20000#if __PYX_LIMITED_VERSION_HEX > 0x030C0000
20001 if (likely(local_value)) {
20002 local_type = (PyObject*) Py_TYPE(local_value);
20003 Py_INCREF(local_type);
20004 local_tb = PyException_GetTraceback(local_value);
20005 }
20006#else
20007 PyErr_NormalizeException(&local_type, &local_value, &local_tb);
20008#if CYTHON_FAST_THREAD_STATE
20009 if (unlikely(tstate->curexc_type))
20010#else
20011 if (unlikely(PyErr_Occurred()))
20012#endif
20013 goto bad;
20014 if (local_tb) {
20015 if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
20016 goto bad;
20017 }
20018#endif // __PYX_LIMITED_VERSION_HEX > 0x030C0000
20019 Py_XINCREF(local_tb);
20020 Py_XINCREF(local_type);
20021 Py_XINCREF(local_value);
20022 *type = local_type;
20023 *value = local_value;
20024 *tb = local_tb;
20025#if CYTHON_FAST_THREAD_STATE
20026 #if CYTHON_USE_EXC_INFO_STACK
20027 {
20028 _PyErr_StackItem *exc_info = tstate->exc_info;
20029 #if PY_VERSION_HEX >= 0x030B00a4
20030 tmp_value = exc_info->exc_value;
20031 exc_info->exc_value = local_value;
20032 tmp_type = NULL;
20033 tmp_tb = NULL;
20034 Py_XDECREF(local_type);
20035 Py_XDECREF(local_tb);

Calls

no outgoing calls

Tested by

no test coverage detected