diff options
author | Hugo Parente Lima <hugo.pl@gmail.com> | 2011-08-31 17:43:45 -0300 |
---|---|---|
committer | Hugo Parente Lima <hugo.pl@gmail.com> | 2012-03-08 16:54:50 -0300 |
commit | 9afe76796d365978ee4be04e195cc5ec43758868 (patch) | |
tree | 0911ef266c6999663e6d62d7cbc48a977e94e733 | |
parent | 08d202e824ffc6221bd426084ac169324808e9da (diff) |
Fix bug 944 - "QIODevice.readData must use qmemcpy instead of qstrncpy"
Reviewer: Luciano Wolf <luciano.wolf@openbossa.org>
Marcelo Lira <marcelo.lira@openbossa.org>
-rw-r--r-- | PySide/QtCore/typesystem_core.xml | 2 | ||||
-rw-r--r-- | tests/QtCore/CMakeLists.txt | 1 | ||||
-rw-r--r-- | tests/QtCore/bug_994.py | 20 |
3 files changed, 22 insertions, 1 deletions
diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index 71c957240..8271a1b3e 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -2043,7 +2043,7 @@ %out = -1; } else { %out = PyString_GET_SIZE((PyObject*)%PYARG_0); - qstrncpy(%1, PyString_AS_STRING((PyObject*)%PYARG_0), %out + 1); + memcpy(%1, PyString_AS_STRING((PyObject*)%PYARG_0), %out); } </conversion-rule> </modify-argument> diff --git a/tests/QtCore/CMakeLists.txt b/tests/QtCore/CMakeLists.txt index 2438b09cf..398746d75 100644 --- a/tests/QtCore/CMakeLists.txt +++ b/tests/QtCore/CMakeLists.txt @@ -22,6 +22,7 @@ PYSIDE_TEST(bug_931.py) PYSIDE_TEST(bug_938.py) PYSIDE_TEST(bug_953.py) PYSIDE_TEST(bug_987.py) +PYSIDE_TEST(bug_994.py) PYSIDE_TEST(blocking_signals_test.py) PYSIDE_TEST(classinfo_test.py) PYSIDE_TEST(child_event_test.py) diff --git a/tests/QtCore/bug_994.py b/tests/QtCore/bug_994.py new file mode 100644 index 000000000..74e352c8f --- /dev/null +++ b/tests/QtCore/bug_994.py @@ -0,0 +1,20 @@ +import unittest +from PySide.QtCore import * + +class MyIODevice (QIODevice): + def readData(self, amount): + return "\0a" * (amount/2) + + def atEnd(self): + return False + +class TestBug944 (unittest.TestCase): + + def testIt(self): + device = MyIODevice() + device.open(QIODevice.ReadOnly) + s = QTextStream(device) + self.assertEqual(s.read(4), "\0a\0a") + +if __name__ == "__main__": + unittest.main() |