aboutsummaryrefslogtreecommitdiffstats
path: root/PySide
diff options
context:
space:
mode:
authorHugo Parente Lima <hugo.pl@gmail.com>2011-04-14 19:56:12 -0300
committerHugo Parente Lima <hugo.pl@gmail.com>2012-03-08 16:54:11 -0300
commitea5dd4f257f45b41984dd83640c6b7abf57a663d (patch)
treefc857931edb6dd83507731340e9e634cabb8edc2 /PySide
parente14378b1265d622a3ed82fbfe4e42fd0a4c0f0cd (diff)
Fix bug 717 - "QByteArray doesn't honor \0 inside strings."
Reviewer: Renato Araújo <renato.filho@openbossa.org> Marcelo Lira <marcelo.lira@openbossa.org>
Diffstat (limited to 'PySide')
-rw-r--r--PySide/QtCore/typesystem_core.xml80
1 files changed, 73 insertions, 7 deletions
diff --git a/PySide/QtCore/typesystem_core.xml b/PySide/QtCore/typesystem_core.xml
index ca36ba518..4817df312 100644
--- a/PySide/QtCore/typesystem_core.xml
+++ b/PySide/QtCore/typesystem_core.xml
@@ -1532,14 +1532,82 @@
<extra-includes>
<include file-name="QNoImplicitBoolCast" location="global"/>
</extra-includes>
+
+ <!-- ### These overloads must be removed accept strings with \x00 in their contents -->
+ <modify-function signature="append(const char*,int)" remove="all" />
+ <modify-function signature="append(const char*)" remove="all" />
+ <modify-function signature="append(QString)" remove="all" />
+ <modify-function signature="contains(const char*)const" remove="all" />
+ <modify-function signature="count(const char*)const" remove="all" />
+ <modify-function signature="endsWith(const char*)const" remove="all" />
+ <modify-function signature="indexOf(const char*,int)const" remove="all" />
+ <modify-function signature="indexOf(char,int)const" remove="all" />
+ <modify-function signature="indexOf(QString,int)const" remove="all" />
+ <modify-function signature="insert(int,const char*)" remove="all" />
+ <modify-function signature="insert(int,char)" remove="all" />
+ <modify-function signature="insert(int,const char*,int)" remove="all" />
+ <modify-function signature="insert(int,QString)" remove="all" />
+ <modify-function signature="lastIndexOf(const char*,int)const" remove="all" />
+ <modify-function signature="lastIndexOf(QString,int)const" remove="all" />
+ <modify-function signature="lastIndexOf(char,int)const" remove="all" />
+ <modify-function signature="prepend(const char*)" remove="all" />
+ <modify-function signature="prepend(const char*,int)" remove="all" />
+ <modify-function signature="replace(QByteArray,const char*)" remove="all" />
+ <modify-function signature="replace(const char*,int,const char*,int)" remove="all"/>
+ <modify-function signature="replace(QString,const char*)" remove="all" />
+ <modify-function signature="replace(const char*,QByteArray)" remove="all" />
+ <modify-function signature="replace(const char*,const char*)" remove="all" />
+ <modify-function signature="replace(int,int,const char*)" remove="all" />
+ <modify-function signature="replace(int,int,const char*,int)" remove="all" />
+ <modify-function signature="replace(char,const char*)" remove="all" />
+ <modify-function signature="replace(char,QString)" remove="all" />
+ <modify-function signature="startsWith(const char*)const" remove="all" />
+ <modify-function signature="operator==(QString)const" remove="all" />
+ <modify-function signature="operator>(QString)const" remove="all" />
+ <modify-function signature="operator>=(QString)const" remove="all" />
+ <modify-function signature="operator&lt;(QString)const" remove="all" />
+ <modify-function signature="operator&lt;=(QString)const" remove="all" />
+ <modify-function signature="operator!=(QString)const" remove="all" />
+ <modify-function signature="operator+=(QString)" remove="all" />
+ <modify-function signature="operator+(QByteArray,const char*)" remove="all" />
+ <modify-function signature="operator+(const char*,QByteArray)" remove="all" />
+ <modify-function signature="operator+(QString,QByteArray)" remove="all" />
+ <modify-function signature="operator+(QByteArray,QString)" remove="all" />
+ <add-function signature="operator+(PyUnicode)">
+ <inject-code>
+ Shiboken::AutoDecRef str(PyUnicode_AsASCIIString(arg));
+ if (!str.isNull()) {
+ QByteArray b(PyString_AS_STRING(str.object()), PyString_GET_SIZE(str.object()));
+ b.prepend(*%CPPSELF);
+ %PYARG_0 = %CONVERTTOPYTHON[QByteArray](b);
+ }
+ </inject-code>
+ </add-function>
+ <add-function signature="operator+(PyUnicode, QByteArray)">
+ <inject-code>
+ Shiboken::AutoDecRef str(PyUnicode_AsASCIIString(arg));
+ if (!str.isNull()) {
+ QByteArray b(PyString_AS_STRING(str.object()), PyString_GET_SIZE(str.object()));
+ b.append(*%CPPSELF);
+ %PYARG_0 = %CONVERTTOPYTHON[QByteArray](b);
+ }
+ </inject-code>
+ </add-function>
+ <add-function signature="operator+(PyString, QByteArray)">
+ <inject-code>
+ QByteArray b(PyString_AS_STRING(arg), PyString_GET_SIZE(arg));
+ %PYARG_0 = %CONVERTTOPYTHON[QByteArray](b + *%CPPSELF);
+ </inject-code>
+ </add-function>
+ <!-- ### -->
+
<add-function signature="__repr__" return-type="PyObject*">
<inject-code class="target" position="beginning">
QByteArray b(((PyObject*)%PYSELF)->ob_type->tp_name);
- b += "(\"";
- QByteArray contents(*%CPPSELF);
- contents.replace("\"", "\\\"");
- b += contents;
- b += "\")";
+ b += '(';
+ Shiboken::AutoDecRef contents(PyObject_Repr(PyString_FromStringAndSize(%CPPSELF.constData(), %CPPSELF.size())));
+ b += PyString_AS_STRING(contents.object());
+ b += ")";
%PYARG_0 = PyString_FromStringAndSize(b.constData(), b.size());
</inject-code>
</add-function>
@@ -1684,8 +1752,6 @@
</modify-function>
<!-- QByteArray(const char *) do the job of this constructor -->
<modify-function signature="QByteArray(const char*,int)" remove="all"/>
- <!-- QByteArray(const char*, const char*) do the job of this function -->
- <modify-function signature="replace(const char*,int,const char*,int)" remove="all"/>
<modify-function signature="fromRawData(const char*,int)">
<modify-argument index="2">
<remove-argument />