]> granicus.if.org Git - python/commitdiff
Manual py3k backport: [svn r74316] Issue #5449: Fix io.BytesIO to not accept arbitrar...
authorAntoine Pitrou <solipsis@pitrou.net>
Sat, 24 Oct 2009 12:28:22 +0000 (12:28 +0000)
committerAntoine Pitrou <solipsis@pitrou.net>
Sat, 24 Oct 2009 12:28:22 +0000 (12:28 +0000)
Lib/test/test_memoryio.py
Modules/_io/bytesio.c

index d94d1a635938c9c5e25c3d33da2b23adf8b3915c..e55a811fda90101d5e06dbc13b425f1fe68d01d1 100644 (file)
@@ -467,6 +467,11 @@ class PyBytesIOTest(MemoryTestMixin, MemorySeekTestMixin, unittest.TestCase):
         self.assertEqual(memio.write(a), 10)
         self.assertEqual(memio.getvalue(), buf)
 
+    def test_issue5449(self):
+        buf = self.buftype("1234567890")
+        self.ioclass(initial_bytes=buf)
+        self.assertRaises(TypeError, self.ioclass, buf, foo=None)
+
 
 class TextIOTestMixin:
 
index beba11c82e9e3d556234384313e4a0f2663d5604..d25cb673f58dda31864b563712f9155970ddd8ae 100644 (file)
@@ -766,9 +766,11 @@ bytesio_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
 static int
 bytesio_init(bytesio *self, PyObject *args, PyObject *kwds)
 {
+    char *kwlist[] = {"initial_bytes", NULL};
     PyObject *initvalue = NULL;
 
-    if (!PyArg_ParseTuple(args, "|O:BytesIO", &initvalue))
+    if (!PyArg_ParseTupleAndKeywords(args, kwds, "|O:BytesIO", kwlist,
+                                     &initvalue))
         return -1;
 
     /* In case, __init__ is called multiple times. */