56 PyObject *expO = (PyObject*) exception;
59 PyObject *typeO = NULL, *valueO=NULL;
61 if (expO == Py_None || expO == NULL) {
62 valueO = PyErr_GetRaisedException();
64 MkErrorSetC (err,
"No active exception to reraise", callfunc, -1);
67 typeO = Py_NewRef(Py_TYPE(valueO));
69 typeO = Py_NewRef(Py_TYPE(expO));
70 valueO = Py_NewRef(expO);
77 if (typeO == Py_None || typeO == NULL) {
78 MkErrorSetC (err,
"No active exception to reraise", callfunc, -1);
81 }
else if (PyErr_GivenExceptionMatches(typeO,
NS(MkKernelThreadState).MkExceptionC)) {
86 }
else if (PyObject_TypeCheck(valueO,(PyTypeObject*)PyExc_BaseException)) {
87 PyObject *tupO = ((PyBaseExceptionObject*)valueO)->args;
88 if (tupO == NULL || !PyTuple_Check(tupO))
break;
89 PyObject *expO = PyTuple_GetItem(tupO, 0);
90 if (expO == NULL)
break;
100 MkErrorSetC (err,
"No active exception value object to reraise", callfunc, -1);
106 OT_OBJ_T tstO = PyObject_CallFunction(
NS(MkErrorC_FormatException),
"OOs", errO, valueO, callfunc);
108 if (PyErr_Occurred()) PyErr_Print();
113 MkErrorSetV(err, callfunc, -1,
"%s: python error", PyExceptionClass_Name(typeO));
119 if (PyErr_Occurred()) PyErr_Clear();