Issue #18711: Add a new PyErr_FormatV function, similar to PyErr_Format but accepting a va_list argument.

This commit is contained in:
Antoine Pitrou 2014-09-30 21:16:27 +02:00
parent 63860e5407
commit 0676a406bf
7 changed files with 39 additions and 10 deletions

View file

@ -749,19 +749,11 @@ PyErr_BadInternalCall(void)
#define PyErr_BadInternalCall() _PyErr_BadInternalCall(__FILE__, __LINE__)
PyObject *
PyErr_Format(PyObject *exception, const char *format, ...)
PyErr_FormatV(PyObject *exception, const char *format, va_list vargs)
{
va_list vargs;
PyObject* string;
#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, format);
#else
va_start(vargs);
#endif
#ifdef Py_DEBUG
/* in debug mode, PyEval_EvalFrameEx() fails with an assertion error
if an exception is set when it is called */
@ -771,11 +763,24 @@ PyErr_Format(PyObject *exception, const char *format, ...)
string = PyUnicode_FromFormatV(format, vargs);
PyErr_SetObject(exception, string);
Py_XDECREF(string);
va_end(vargs);
return NULL;
}
PyObject *
PyErr_Format(PyObject *exception, const char *format, ...)
{
va_list vargs;
#ifdef HAVE_STDARG_PROTOTYPES
va_start(vargs, format);
#else
va_start(vargs);
#endif
PyErr_FormatV(exception, format, vargs);
va_end(vargs);
return NULL;
}
PyObject *
PyErr_NewException(const char *name, PyObject *base, PyObject *dict)