diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml
index 4f98faa..26a118f 100644
--- a/PySide/QtCore/typesystem_core.xml
+++ b/PySide/QtCore/typesystem_core.xml
@@ -1790,11 +1790,22 @@
-
-
-
-
-
+
+
+
+
+
+ const void* ptr;
+ Py_ssize_t len;
+ PyObject_AsReadBuffer(%PYARG_1, &ptr, &len);
+ %PYARG_0 = %CONVERTTOPYTHON[bool](%CPPSELF.%FUNCTION_NAME((uchar*)ptr));
+
+
+
+
+ %PYARG_0 = PyBuffer_FromReadWriteMemory(%CPPSELF.%FUNCTION_NAME(%1, %2, %3), %2);
+
+
diff --git a/tests/QtCore/qfile_test.py b/tests/QtCore/qfile_test.py
index adbdd68..898e574 100644
--- a/tests/QtCore/qfile_test.py
+++ b/tests/QtCore/qfile_test.py
@@ -27,5 +27,16 @@ class GetCharTest(unittest.TestCase):
self.assert_(not obj.getChar()[0])
obj.close()
+ def testBug721(self):
+ obj = QFile(self.filename)
+ obj.open(QIODevice.ReadOnly)
+ memory = obj.map(0, 1)
+ self.assertEqual(len(memory), 1)
+ self.assertEqual(memory[0], 'a')
+ obj.unmap(memory)
+ # now memory points to wild bytes... :-)
+ # uncommenting this must cause a segfault.
+ # self.assertEqual(memory[0], 'a')
+
if __name__ == '__main__':
unittest.main()