raise an ValueError in getvalue() on closed StringIO (closes #12161)
Thanks for Catalin Iacob for the patch.
diff --git a/Lib/StringIO.py b/Lib/StringIO.py
index 340fae1..f74a066 100644
--- a/Lib/StringIO.py
+++ b/Lib/StringIO.py
@@ -266,6 +266,7 @@
8th bit) will cause a UnicodeError to be raised when getvalue()
is called.
"""
+ _complain_ifclosed(self.closed)
if self.buflist:
self.buf += ''.join(self.buflist)
self.buflist = []
diff --git a/Lib/test/test_StringIO.py b/Lib/test/test_StringIO.py
index 4774c6d..76fc3d7 100644
--- a/Lib/test/test_StringIO.py
+++ b/Lib/test/test_StringIO.py
@@ -100,6 +100,10 @@
self._fp.close()
self.assertRaises(ValueError, self._fp.next)
+ def test_getvalue(self):
+ self._fp.close()
+ self.assertRaises(ValueError, self._fp.getvalue)
+
class TestStringIO(TestGenericStringIO):
MODULE = StringIO
diff --git a/Misc/ACKS b/Misc/ACKS
index 164473f..0066b32 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -382,6 +382,7 @@
Jeremy Hylton
Gerhard Häring
Fredrik Håård
+Catalin Iacob
Mihai Ibanescu
Lars Immisch
Bobby Impollonia
diff --git a/Misc/NEWS b/Misc/NEWS
index e34bd48..ae2b5fa 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -83,6 +83,9 @@
Library
-------
+- Issue #12161: Cause StringIO.getvalue() to raise a ValueError when used on a
+ closed StringIO instance.
+
- Issue #12182: Fix pydoc.HTMLDoc.multicolumn() if Python uses the new (true)
division (python -Qnew). Patch written by Ralf W. Grosse-Kunstleve.