Improve the exceptions raised by PyErr_BadInternalCall(); adding the
filename and line number of the call site to allow esier debugging. This closes SourceForge patch #101214.
This commit is contained in:
parent
9ed49e979f
commit
6d63adfbb7
|
@ -82,7 +82,12 @@ extern DL_IMPORT(PyObject *) PyErr_SetFromWindowsErrWithFilename(int, const char
|
|||
extern DL_IMPORT(PyObject *) PyErr_SetFromWindowsErr(int);
|
||||
#endif
|
||||
|
||||
/* Export the old function so that the existing API remains available: */
|
||||
extern DL_IMPORT(void) PyErr_BadInternalCall(void);
|
||||
extern DL_IMPORT(void) _PyErr_BadInternalCall(char *filename, int lineno);
|
||||
/* Mask the old API with a call to the new API for code compiled under
|
||||
Python 2.0: */
|
||||
#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
|
||||
|
||||
/* Function to create a new exception */
|
||||
DL_IMPORT(PyObject *) PyErr_NewException(char *name, PyObject *base,
|
||||
|
|
|
@ -368,12 +368,25 @@ PyObject *PyErr_SetFromWindowsErr(int ierr)
|
|||
}
|
||||
#endif /* MS_WINDOWS */
|
||||
|
||||
void
|
||||
_PyErr_BadInternalCall(char *filename, int lineno)
|
||||
{
|
||||
PyErr_Format(PyExc_SystemError,
|
||||
"%s:%d: bad argument to internal function",
|
||||
filename, lineno);
|
||||
}
|
||||
|
||||
/* Remove the preprocessor macro for PyErr_BadInternalCall() so that we can
|
||||
export the entry point for existing object code: */
|
||||
#undef PyErr_BadInternalCall
|
||||
void
|
||||
PyErr_BadInternalCall(void)
|
||||
{
|
||||
PyErr_SetString(PyExc_SystemError,
|
||||
"bad argument to internal function");
|
||||
PyErr_Format(PyExc_SystemError,
|
||||
"bad argument to internal function");
|
||||
}
|
||||
#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
|
||||
|
||||
|
||||
|
||||
PyObject *
|
||||
|
|
Loading…
Reference in New Issue