From a0a50feea816fef21c525212dd867f7d7f3f9ab4 Mon Sep 17 00:00:00 2001 From: Thomas Heller Date: Fri, 27 Oct 2006 18:47:29 +0000 Subject: [PATCH] WindowsError.str should display the windows error code, not the posix error code; with test. Fixes #1576174. Backported from trunk, revision 52485. --- Lib/test/test_exceptions.py | 13 +++++++++++++ Misc/NEWS | 3 +++ Objects/exceptions.c | 14 +++++++------- 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/Lib/test/test_exceptions.py b/Lib/test/test_exceptions.py index 1d940466d5e..05666a859f6 100644 --- a/Lib/test/test_exceptions.py +++ b/Lib/test/test_exceptions.py @@ -183,6 +183,19 @@ class ExceptionTests(unittest.TestCase): test_capi1() test_capi2() + def test_WindowsError(self): + try: + WindowsError + except NameError: + pass + else: + self.failUnlessEqual(str(WindowsError(1001)), + "1001") + self.failUnlessEqual(str(WindowsError(1001, "message")), + "[Error 1001] message") + self.failUnlessEqual(WindowsError(1001, "message").errno, 22) + self.failUnlessEqual(WindowsError(1001, "message").winerror, 1001) + def testAttributes(self): # test that exception attributes are happy diff --git a/Misc/NEWS b/Misc/NEWS index 57e5ad0c3dd..9ad45fc6f13 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -12,6 +12,9 @@ What's New in Python 2.5.1c1? Core and builtins ----------------- +- Bug #1576174: WindowsError now displays the windows error code + again, no longer the posix error code. + - Patch #1549049: Support long values in structmember. - Bug #1542016: make sys.callstats() match its docstring and return an diff --git a/Objects/exceptions.c b/Objects/exceptions.c index c0b813d4a22..0cd819c5a15 100644 --- a/Objects/exceptions.c +++ b/Objects/exceptions.c @@ -828,9 +828,9 @@ WindowsError_str(PyWindowsErrorObject *self) return NULL; } - if (self->myerrno) { - Py_INCREF(self->myerrno); - PyTuple_SET_ITEM(tuple, 0, self->myerrno); + if (self->winerror) { + Py_INCREF(self->winerror); + PyTuple_SET_ITEM(tuple, 0, self->winerror); } else { Py_INCREF(Py_None); @@ -852,7 +852,7 @@ WindowsError_str(PyWindowsErrorObject *self) Py_DECREF(fmt); Py_DECREF(tuple); } - else if (self->myerrno && self->strerror) { + else if (self->winerror && self->strerror) { PyObject *fmt; PyObject *tuple; @@ -866,9 +866,9 @@ WindowsError_str(PyWindowsErrorObject *self) return NULL; } - if (self->myerrno) { - Py_INCREF(self->myerrno); - PyTuple_SET_ITEM(tuple, 0, self->myerrno); + if (self->winerror) { + Py_INCREF(self->winerror); + PyTuple_SET_ITEM(tuple, 0, self->winerror); } else { Py_INCREF(Py_None);