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:
Fred Drake 2000-08-24 22:38:39 +00:00
parent 9ed49e979f
commit 6d63adfbb7
2 changed files with 20 additions and 2 deletions

View File

@ -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,

View File

@ -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 *