aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--Include/pyerrors.h5
-rw-r--r--Python/errors.c17
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 *