mirror of
https://github.com/python/cpython.git
synced 2025-10-07 15:42:02 +00:00
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
2 changed files with 20 additions and 2 deletions
|
@ -82,7 +82,12 @@ extern DL_IMPORT(PyObject *) PyErr_SetFromWindowsErrWithFilename(int, const char
|
||||||
extern DL_IMPORT(PyObject *) PyErr_SetFromWindowsErr(int);
|
extern DL_IMPORT(PyObject *) PyErr_SetFromWindowsErr(int);
|
||||||
#endif
|
#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(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 */
|
/* Function to create a new exception */
|
||||||
DL_IMPORT(PyObject *) PyErr_NewException(char *name, PyObject *base,
|
DL_IMPORT(PyObject *) PyErr_NewException(char *name, PyObject *base,
|
||||||
|
|
|
@ -368,12 +368,25 @@ PyObject *PyErr_SetFromWindowsErr(int ierr)
|
||||||
}
|
}
|
||||||
#endif /* MS_WINDOWS */
|
#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
|
void
|
||||||
PyErr_BadInternalCall(void)
|
PyErr_BadInternalCall(void)
|
||||||
{
|
{
|
||||||
PyErr_SetString(PyExc_SystemError,
|
PyErr_Format(PyExc_SystemError,
|
||||||
"bad argument to internal function");
|
"bad argument to internal function");
|
||||||
}
|
}
|
||||||
|
#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
PyObject *
|
PyObject *
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue