diff options
-rw-r--r-- | Include/pyerrors.h | 5 | ||||
-rw-r--r-- | Python/errors.c | 17 |
2 files changed, 20 insertions, 2 deletions
diff --git a/Include/pyerrors.h b/Include/pyerrors.h index f461068ab28..6e6035334d4 100644 --- a/Include/pyerrors.h +++ b/Include/pyerrors.h @@ -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, diff --git a/Python/errors.c b/Python/errors.c index ffa7f82f345..8486423479e 100644 --- a/Python/errors.c +++ b/Python/errors.c @@ -369,11 +369,24 @@ 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 * |