Fixed memoryview constructor. It allowed arbitrary keyword arguments. The bug was found by mykhal from #python. I've also added a small test case in the new test_memoryview.py

This commit is contained in:
Christian Heimes 2007-11-08 02:28:11 +00:00
parent c1bdbc316d
commit 7b6fc8e19d
2 changed files with 33 additions and 3 deletions

View File

@ -0,0 +1,25 @@
"""Unit tests for the memoryview
XXX We need more tests! Some tests are in test_bytes
"""
import unittest
import test.test_support
class MemoryviewTest(unittest.TestCase):
def test_constructor(self):
ob = b'test'
self.assert_(memoryview(ob))
self.assert_(memoryview(object=ob))
self.assertRaises(TypeError, memoryview)
self.assertRaises(TypeError, memoryview, ob, ob)
self.assertRaises(TypeError, memoryview, argument=ob)
self.assertRaises(TypeError, memoryview, ob, argument=True)
def test_main():
test.test_support.run_unittest(MemoryviewTest)
if __name__ == "__main__":
test_main()

View File

@ -69,10 +69,15 @@ PyMemoryView_FromObject(PyObject *base)
static PyObject * static PyObject *
memory_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds) memory_new(PyTypeObject *subtype, PyObject *args, PyObject *kwds)
{ {
PyObject *obj; PyObject *obj;
if (!PyArg_UnpackTuple(args, "memoryview", 1, 1, &obj)) return NULL; static char *kwlist[] = {"object", 0};
return PyMemoryView_FromObject(obj); if (!PyArg_ParseTupleAndKeywords(args, kwds, "O:memoryview", kwlist,
&obj)) {
return NULL;
}
return PyMemoryView_FromObject(obj);
} }