diff --git a/Lib/test/test_mmap.py b/Lib/test/test_mmap.py index 8a145cfddba..49ec78b842d 100644 --- a/Lib/test/test_mmap.py +++ b/Lib/test/test_mmap.py @@ -436,6 +436,11 @@ class MmapTests(unittest.TestCase): self.assertRaises(TypeError, m.write, "foo") + def test_error(self): + self.assert_(issubclass(mmap.error, EnvironmentError)) + self.assert_("mmap.error" in str(mmap.error)) + + def test_main(): run_unittest(MmapTests) diff --git a/Misc/NEWS b/Misc/NEWS index 377f1ed2927..a722195c52c 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -1149,6 +1149,9 @@ Library Extension Modules ----------------- +- #2112: mmap.error is now a subclass of EnvironmentError and not a + direct EnvironmentError + - Bug #2111: mmap segfaults when trying to write a block opened with PROT_READ - #2063: correct order of utime and stime in os.times() result on Windows. diff --git a/Modules/mmapmodule.c b/Modules/mmapmodule.c index e47211f171a..c71d8402cbd 100644 --- a/Modules/mmapmodule.c +++ b/Modules/mmapmodule.c @@ -1402,7 +1402,10 @@ initmmap(void) dict = PyModule_GetDict(module); if (!dict) return; - mmap_module_error = PyExc_EnvironmentError; + mmap_module_error = PyErr_NewException("mmap.error", + PyExc_EnvironmentError , NULL); + if (mmap_module_error == NULL) + return; PyDict_SetItemString(dict, "error", mmap_module_error); PyDict_SetItemString(dict, "mmap", (PyObject*) &mmap_object_type); #ifdef PROT_EXEC