summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kde/kdebindings/.md5sum1
-rwxr-xr-xkde/kdebindings/Pkgfile8
-rw-r--r--kde/kdebindings/fix-generator-segfaults.patch63
3 files changed, 69 insertions, 3 deletions
diff --git a/kde/kdebindings/.md5sum b/kde/kdebindings/.md5sum
index da98f3b93..c12d78b3b 100644
--- a/kde/kdebindings/.md5sum
+++ b/kde/kdebindings/.md5sum
@@ -1,2 +1,3 @@
+e870fe57c933a076c3e8319604edb63d fix-generator-segfaults.patch
0f194ec6cb172ca1b958f4257020d24c fix-pyqt4-build.patch
02f6a8397beb6a034fe9025f03f6bd02 kdebindings-4.5.2.tar.bz2
diff --git a/kde/kdebindings/Pkgfile b/kde/kdebindings/Pkgfile
index 81d57b0e7..432d9bce1 100755
--- a/kde/kdebindings/Pkgfile
+++ b/kde/kdebindings/Pkgfile
@@ -6,15 +6,17 @@
name=kdebindings
version=4.5.2
-release=1
-source=(ftp://ftp.kde.org/pub/kde/stable/$version/src/$name-$version.tar.bz2
- fix-pyqt4-build.patch)
+release=2
+source=(ftp://kde.mirrors.pair.com/stable/$version/src/$name-$version.tar.bz2
+ fix-pyqt4-build.patch
+ fix-generator-segfaults.patch)
build() {
unset MAKEFLAGS
cd $name-$version
patch -Np0 -i ../fix-pyqt4-build.patch
+ patch -Np4 -i ../fix-generator-segfaults.patch
mkdir build
cd build
diff --git a/kde/kdebindings/fix-generator-segfaults.patch b/kde/kdebindings/fix-generator-segfaults.patch
new file mode 100644
index 000000000..5b69b5961
--- /dev/null
+++ b/kde/kdebindings/fix-generator-segfaults.patch
@@ -0,0 +1,63 @@
+--- branches/KDE/4.5/kdebindings/generator/generators/smoke/helpers.cpp 2010/10/09 06:54:13 1184023
++++ branches/KDE/4.5/kdebindings/generator/generators/smoke/helpers.cpp 2010/10/09 06:57:13 1184024
+@@ -131,10 +131,10 @@
+ // map this method to the function, so we can later retrieve the header it was defined in
+ globalFunctionMap[&parent->methods().last()] = &fn;
+
+- int methIndex = parent->methods().length() - 1;
++ int methIndex = parent->methods().size() - 1;
+ addOverloads(meth);
+ // handle the methods appended by addOverloads()
+- for (int i = parent->methods().length() - 1; i > methIndex; --i)
++ for (int i = parent->methods().size() - 1; i > methIndex; --i)
+ globalFunctionMap[&parent->methods()[i]] = &fn;
+
+ (*usedTypes) << meth.type();
+@@ -458,7 +458,11 @@
+ return munge(&resolved);
+ }
+
+- if (type->pointerDepth() > 1 || (type->getClass() && type->getClass()->isTemplate() && (!Options::qtMode || (Options::qtMode && type->getClass()->name() != "QFlags"))) ||
++ if (type->name().contains("long long") || type->name() == "size_t") {
++ // Special case 'long long' types as '$'.
++ // Hack: 'size_t' isn't being fully resolved for some reason.
++ return '$';
++ } else if (type->pointerDepth() > 1 || (type->getClass() && type->getClass()->isTemplate() && (!Options::qtMode || (Options::qtMode && type->getClass()->name() != "QFlags"))) ||
+ (Options::voidpTypes.contains(type->name()) && !Options::scalarTypes.contains(type->name())) )
+ {
+ // QString and QStringList are both mapped to Smoke::t_voidp, but QString is a scalar as well
+--- branches/KDE/4.5/kdebindings/generator/type_compiler.cpp 2010/10/09 06:54:13 1184023
++++ branches/KDE/4.5/kdebindings/generator/type_compiler.cpp 2010/10/09 06:57:13 1184024
+@@ -182,7 +182,7 @@
+ TypeCompiler tc(m_session, m_visitor);
+ tc.run(node->type_specifier, node->declarator);
+ NameCompiler name_cc(m_session, m_visitor);
+- if (tc.type().isFunctionPointer())
++ if (tc.type().isFunctionPointer() && node->declarator && node->declarator->sub_declarator)
+ name_cc.run(node->declarator->sub_declarator->id);
+ else if (node->declarator)
+ name_cc.run(node->declarator->id);
+--- branches/KDE/4.5/kdebindings/generator/parser/rpp/pp-macro-expander.cpp 2010/10/09 06:54:13 1184023
++++ branches/KDE/4.5/kdebindings/generator/parser/rpp/pp-macro-expander.cpp 2010/10/09 06:57:13 1184024
+@@ -268,10 +268,10 @@
+ output << '\"';
+
+ while (!is.atEnd()) {
+- if (input == '"') {
++ if (is == '"') {
+ output << '\\' << is;
+
+- } else if (input == '\n') {
++ } else if (is == '\n') {
+ output << '"' << is << '"';
+
+ } else {
+@@ -338,7 +338,7 @@
+
+ skip_blanks(input, devnull());
+ //Omit paste tokens behind empty used actuals, else we will merge with the previous text
+- if(input == '#' && (++input) == '#') {
++ if(!input.atEnd() && input == '#' && !(++input).atEnd() && input == '#') {
+ ++input;
+ //We have skipped a paste token
+ }else{