diff options
-rw-r--r-- | PySide/QtCore/typesystem_core.xml | 17 | ||||
-rw-r--r-- | tests/QtCore/qbytearray_test.py | 6 |
2 files changed, 15 insertions, 8 deletions
diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml index edd4facd1..863c05634 100644 --- a/PySide/QtCore/typesystem_core.xml +++ b/PySide/QtCore/typesystem_core.xml @@ -1534,12 +1534,13 @@ </extra-includes> <add-function signature="__repr__" return-type="PyObject*"> <inject-code class="target" position="beginning"> - PyObject* str = PyString_FromStringAndSize(%CPPSELF.constData(), %CPPSELF.size()); - <insert-template name="repr_code"> - <replace from="%REPR_FORMAT" to="'%s'" /> - <replace from="%REPR_ARGS" to="PyString_AS_STRING(str)" /> - </insert-template> - Py_DECREF(str); + QByteArray b(((PyObject*)%PYSELF)->ob_type->tp_name); + b += "(\""; + QByteArray contents(*%CPPSELF); + contents.replace("\"", "\\\""); + b += contents; + b += "\")"; + %PYARG_0 = PyString_FromStringAndSize(b.constData(), b.size()); </inject-code> </add-function> @@ -1710,9 +1711,9 @@ <insert-template name="fix_bool*"/> </inject-code> </modify-function> - <add-function signature="__str__()" return-type="PyObject*"> + <add-function signature="__str__" return-type="PyObject*"> <inject-code class="target" position="beginning"> - %PYARG_0 = PyString_FromString(%CPPSELF.data()); + %PYARG_0 = PyString_FromStringAndSize(%CPPSELF.constData(), %CPPSELF.size()); </inject-code> </add-function> <add-function signature="__len__"> diff --git a/tests/QtCore/qbytearray_test.py b/tests/QtCore/qbytearray_test.py index 4a600ba31..330a7d09f 100644 --- a/tests/QtCore/qbytearray_test.py +++ b/tests/QtCore/qbytearray_test.py @@ -148,6 +148,12 @@ class TestPickler(unittest.TestCase): ba2 = pickle.loads(output.getvalue()) self.assertEqual(ba, ba2) +class QByteArrayBug720(unittest.TestCase): + def testIt(self): + ba = QByteArray("32\"1\x00123") + self.assertEqual(str(ba), "32\"1\x00123") + self.assertEqual(repr(ba), "PySide.QtCore.QByteArray(\"32\\\"1\x00123\")") + if __name__ == '__main__': unittest.main() |