From: Benjamin Peterson Date: Tue, 6 May 2008 22:18:11 +0000 (+0000) Subject: Fix logic error in Python/_warnings.c and add a test to verify X-Git-Tag: v2.6a3~16 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d29503291013b7dfd70522e776b0c244aff0a264;p=python Fix logic error in Python/_warnings.c and add a test to verify --- diff --git a/Lib/test/test_warnings.py b/Lib/test/test_warnings.py index 1b5ee3291c..70d8c56150 100644 --- a/Lib/test/test_warnings.py +++ b/Lib/test/test_warnings.py @@ -388,6 +388,15 @@ class _WarningsTests(BaseTest): result = stream.getvalue() self.failUnless(text in result) + def test_showwarning_not_callable(self): + self.module.filterwarnings("always", category=UserWarning) + old_showwarning = self.module.showwarning + self.module.showwarning = 23 + try: + self.assertRaises(TypeError, self.module.warn, "Warning!") + finally: + self.module.showwarning = old_showwarning + def test_show_warning_output(self): # With showarning() missing, make sure that output is okay. text = 'test show_warning' diff --git a/Python/_warnings.c b/Python/_warnings.c index 0e48675d81..e75d4fd06a 100644 --- a/Python/_warnings.c +++ b/Python/_warnings.c @@ -400,6 +400,8 @@ warn_explicit(PyObject *category, PyObject *message, PyErr_SetString(PyExc_TypeError, "warnings.showwarning() must be set to a " "function or method"); + Py_DECREF(show_fxn); + goto cleanup; } defaults = PyFunction_GetDefaults(check_fxn);