diff options
-rw-r--r-- | kde/kdebindings/.md5sum | 1 | ||||
-rwxr-xr-x | kde/kdebindings/Pkgfile | 8 | ||||
-rw-r--r-- | kde/kdebindings/fix-generator-segfaults.patch | 63 |
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{ |