mirror of
https://github.com/python/cpython.git
synced 2025-08-31 05:58:33 +00:00
New functions for extension writers on Windows:
PyErr_SetExcFromWindowsErr(), PyErr_SetExcFromWindowsErrWithFilename(). Similar to PyErr_SetFromWindowsErrWithFilename() and PyErr_SetFromWindowsErr(), but they allow to specify the exception type to raise. Available on Windows. See SF patch #576458.
This commit is contained in:
parent
b9e0764d8b
commit
085358a3e2
4 changed files with 42 additions and 3 deletions
|
@ -337,7 +337,8 @@ PyErr_SetFromErrno(PyObject *exc)
|
|||
|
||||
#ifdef MS_WINDOWS
|
||||
/* Windows specific error code handling */
|
||||
PyObject *PyErr_SetFromWindowsErrWithFilename(
|
||||
PyObject *PyErr_SetExcFromWindowsErrWithFilename(
|
||||
PyObject *exc,
|
||||
int ierr,
|
||||
const char *filename)
|
||||
{
|
||||
|
@ -366,16 +367,29 @@ PyObject *PyErr_SetFromWindowsErrWithFilename(
|
|||
else
|
||||
v = Py_BuildValue("(is)", err, s);
|
||||
if (v != NULL) {
|
||||
PyErr_SetObject(PyExc_WindowsError, v);
|
||||
PyErr_SetObject(exc, v);
|
||||
Py_DECREF(v);
|
||||
}
|
||||
LocalFree(s);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
PyObject *PyErr_SetExcFromWindowsErr(PyObject *exc, int ierr)
|
||||
{
|
||||
return PyErr_SetExcFromWindowsErrWithFilename(exc, ierr, NULL);
|
||||
}
|
||||
|
||||
PyObject *PyErr_SetFromWindowsErr(int ierr)
|
||||
{
|
||||
return PyErr_SetFromWindowsErrWithFilename(ierr, NULL);
|
||||
return PyErr_SetExcFromWindowsErrWithFilename(PyExc_WindowsError,
|
||||
ierr, NULL);
|
||||
}
|
||||
PyObject *PyErr_SetFromWindowsErrWithFilename(
|
||||
int ierr,
|
||||
const char *filename)
|
||||
{
|
||||
return PyErr_SetExcFromWindowsErrWithFilename(PyExc_WindowsError,
|
||||
ierr, filename);
|
||||
}
|
||||
#endif /* MS_WINDOWS */
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue