Commit 1c0c0037 authored by Hirokazu Yamamoto's avatar Hirokazu Yamamoto

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.
........
parent e5091f6c
......@@ -338,6 +338,20 @@ class WarnTests(unittest.TestCase):
self.module.warn_explicit,
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):
module = c_warnings
......
......@@ -40,6 +40,8 @@ C-API
Library
-------
- Issue #6415: Fixed warnings.warn sagfault on bad formatted string.
- Issue #6358: The exit status of a command started with os.popen() was
reported differently than it did with python 2.x.
......
......@@ -320,6 +320,8 @@ warn_explicit(PyObject *category, PyObject *message,
}
if (rc == 1) {
text = PyObject_Str(message);
if (text == NULL)
goto cleanup;
category = (PyObject*)message->ob_type;
}
else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment