Merged revisions 74040,74042 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk ........ r74040 | hirokazu.yamamoto | 2009-07-17 15:20:46 +0900 | 1 line Issue #6415: Fixed warnings.warn sagfault on bad formatted string. ........ r74042 | hirokazu.yamamoto | 2009-07-17 15:26:54 +0900 | 1 line NEWS about r74040. ........
This commit is contained in:
parent
eed738bec0
commit
fcaa2104aa
|
@ -337,6 +337,19 @@ class WarnTests(unittest.TestCase):
|
||||||
self.module.warn_explicit,
|
self.module.warn_explicit,
|
||||||
None, Warning, None, 1, registry=42)
|
None, Warning, None, 1, registry=42)
|
||||||
|
|
||||||
|
def test_bad_str(self):
|
||||||
|
# issue 6415
|
||||||
|
# Warnings instance with a bad format string for __str__ should not
|
||||||
|
# trigger a bus error.
|
||||||
|
class BadStrWarning(Warning):
|
||||||
|
"""Warning with a bad format string for __str__."""
|
||||||
|
def __str__(self):
|
||||||
|
return ("A bad formatted string %(err)" %
|
||||||
|
{"err" : "there is no %(err)s"})
|
||||||
|
|
||||||
|
with self.assertRaises(ValueError):
|
||||||
|
self.module.warn(BadStrWarning())
|
||||||
|
|
||||||
|
|
||||||
class CWarnTests(BaseTest, WarnTests):
|
class CWarnTests(BaseTest, WarnTests):
|
||||||
module = c_warnings
|
module = c_warnings
|
||||||
|
|
|
@ -62,6 +62,8 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #6415: Fixed warnings.warn sagfault on bad formatted string.
|
||||||
|
|
||||||
- Issue #6344: Fixed a crash of mmap.read() when passed a negative argument.
|
- Issue #6344: Fixed a crash of mmap.read() when passed a negative argument.
|
||||||
|
|
||||||
- Issue #5230: pydoc would report no documentation found if a module generated
|
- Issue #5230: pydoc would report no documentation found if a module generated
|
||||||
|
|
|
@ -304,6 +304,8 @@ warn_explicit(PyObject *category, PyObject *message,
|
||||||
}
|
}
|
||||||
if (rc == 1) {
|
if (rc == 1) {
|
||||||
text = PyObject_Str(message);
|
text = PyObject_Str(message);
|
||||||
|
if (text == NULL)
|
||||||
|
goto cleanup;
|
||||||
category = (PyObject*)message->ob_type;
|
category = (PyObject*)message->ob_type;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
Loading…
Reference in New Issue