This commit is contained in:
Benjamin Peterson 2014-11-12 10:23:35 -05:00
commit 994c7f76a3
3 changed files with 19 additions and 1 deletions

View File

@ -2856,6 +2856,22 @@ class TextIOWrapperTest(unittest.TestCase):
self.assertEqual(t.read(200), bytes_val.decode('utf-8'))
def test_issue22849(self):
class F(object):
def readable(self): return True
def writable(self): return True
def seekable(self): return True
for i in range(10):
try:
self.TextIOWrapper(F(), encoding='utf-8')
except Exception:
pass
F.tell = lambda x: 0
t = self.TextIOWrapper(F(), encoding='utf-8')
class MemviewBytesIO(io.BytesIO):
'''A BytesIO object whose read method returns memoryviews
rather than bytes'''

View File

@ -188,6 +188,8 @@ Library
- Issue #22578: Added attributes to the re.error class.
- Issue #22849: Fix possible double free in the io.TextIOWrapper constructor.
- Issue #12728: Different Unicode characters having the same uppercase but
different lowercase are now matched in case-insensitive regular expressions.

View File

@ -1061,7 +1061,7 @@ textiowrapper_init(textio *self, PyObject *args, PyObject *kwds)
}
/* Finished sorting out the codec details */
Py_DECREF(codec_info);
Py_CLEAR(codec_info);
self->buffer = buffer;
Py_INCREF(buffer);