[arch-commits] Commit in kdebindings/trunk (PKGBUILD fix-generator-segfaults.patch)

Andrea Scarpino andrea at archlinux.org
Sat Oct 9 12:28:19 UTC 2010


    Date: Saturday, October 9, 2010 @ 08:28:19
  Author: andrea
Revision: 94670

upgpkg: kdebindings 4.5.2-5
fix for generator segfaults

Added:
  kdebindings/trunk/fix-generator-segfaults.patch
Modified:
  kdebindings/trunk/PKGBUILD

-------------------------------+
 PKGBUILD                      |   11 +++++-
 fix-generator-segfaults.patch |   63 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 71 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2010-10-09 11:22:20 UTC (rev 94669)
+++ PKGBUILD	2010-10-09 12:28:19 UTC (rev 94670)
@@ -7,21 +7,26 @@
          'kdebindings-python'
          'kdebindings-smoke')
 pkgver=4.5.2
-pkgrel=4
+pkgrel=5
 arch=('i686' 'x86_64')
 url='http://www.kde.org'
 license=('GPL' 'LGPL')
 makedepends=('pkgconfig' 'cmake' 'automoc4' 'pyqt' 'kdepim-runtime' 'mono'
 	'kdegraphics-okular' 'qwt' 'docbook-xsl' 'boost' 'qscintilla')
 source=("http://download.kde.org/stable/${pkgver}/src/${pkgbase}-${pkgver}.tar.bz2"
-	'fix-pyqt4-build.patch')
+	'fix-pyqt4-build.patch'
+	'fix-generator-segfaults.patch')
 sha1sums=('108fd6e3dbb341adc0e90487d1b681534968f1d2'
-	'36b52d147fee24a65c756baaad00e3d1ac081d3d')
+	'36b52d147fee24a65c756baaad00e3d1ac081d3d'
+	'c0045f5b57fb62e6b0a9443548938f93af501b9d')
 
 build() {
 	cd ${srcdir}/${pkgbase}-${pkgver}
 
 	patch -Np0 -i ${srcdir}/fix-pyqt4-build.patch
+	
+	# Already fixed in 4.5.3
+	patch -Np4 -i ${srcdir}/fix-generator-segfaults.patch
 
 	export MONO_SHARED_DIR="${srcdir}/build/.mono"
 	mkdir -p "$MONO_SHARED_DIR"

Added: fix-generator-segfaults.patch
===================================================================
--- fix-generator-segfaults.patch	                        (rev 0)
+++ fix-generator-segfaults.patch	2010-10-09 12:28:19 UTC (rev 94670)
@@ -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{




More information about the arch-commits mailing list