[arch-commits] Commit in qt (3 files)

Andrea Scarpino andrea at archlinux.org
Thu May 26 00:12:05 UTC 2011


    Date: Wednesday, May 25, 2011 @ 20:12:04
  Author: andrea
Revision: 125344

upgpkg: qt 4.7.3-2
fix a crash in kmail/kontact 4.6 (FS#24438)

Added:
  qt/kde-unstable/
  qt/kde-unstable/qtbug-16292.patch
Modified:
  qt/kde-unstable/PKGBUILD

--------------------------------+
 PKGBUILD                       |   11 +++++-
 kde-unstable/qtbug-16292.patch |   62 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 70 insertions(+), 3 deletions(-)

Modified: kde-unstable/PKGBUILD
===================================================================
--- trunk/PKGBUILD	2011-05-25 22:23:06 UTC (rev 125328)
+++ kde-unstable/PKGBUILD	2011-05-26 00:12:04 UTC (rev 125344)
@@ -5,7 +5,7 @@
 pkgbase=qt
 pkgname=('qt' 'qt-private-headers')
 pkgver=4.7.3
-pkgrel=1
+pkgrel=2
 arch=('i686' 'x86_64')
 url='http://qt.nokia.com/'
 license=('GPL3' 'LGPL')
@@ -17,12 +17,14 @@
 _pkgfqn="qt-everywhere-opensource-src-${pkgver}"
 source=("ftp://ftp.qt.nokia.com/qt/source/${_pkgfqn}.tar.gz"
         'assistant.desktop' 'designer.desktop' 'linguist.desktop'
-        'qtconfig.desktop')
+        'qtconfig.desktop'
+        'qtbug-16292.patch')
 md5sums=('49b96eefb1224cc529af6fe5608654fe'
          'fc211414130ab2764132e7370f8e5caa'
          '85179f5e0437514f8639957e1d8baf62'
          'f11852b97583610f3dbb669ebc3e21bc'
-         '6b771c8a81dd90b45e8a79afa0e5bbfd')
+         '6b771c8a81dd90b45e8a79afa0e5bbfd'
+         'dc7ed8c2e8c68a175f7f05a34dccc937')
 
 build() {
 	unset QMAKESPEC
@@ -31,6 +33,9 @@
 	export LD_LIBRARY_PATH=${QT4DIR}/lib:${LD_LIBRARY_PATH}
 
 	cd $srcdir/$_pkgfqn
+
+    # Already fixed upstream
+    patch -p1 -i "${srcdir}"/qtbug-16292.patch
 	
     sed -i "s|-O2|$CXXFLAGS|" mkspecs/common/g++.conf
 	sed -i "/^QMAKE_RPATH/s| -Wl,-rpath,||g" mkspecs/common/g++.conf

Added: kde-unstable/qtbug-16292.patch
===================================================================
--- kde-unstable/qtbug-16292.patch	                        (rev 0)
+++ kde-unstable/qtbug-16292.patch	2011-05-26 00:12:04 UTC (rev 125344)
@@ -0,0 +1,62 @@
+From e340844bd614add505a39a3a6b915632476f6305 Mon Sep 17 00:00:00 2001
+From: Gabriel de Dietrich <gabriel.dietrich-de at nokia.com>
+Date: Tue, 15 Feb 2011 11:19:26 +0100
+Subject: [PATCH] Fix crash in KPackageKit
+
+QTreeViewPrivate::itemHeight() may refer to an invalid QModelIndex
+after calling QTreeView::indexRowSizeHint().
+
+Same thing inside QTreeView::indexRowSizeHint(), since
+QHeaderView::count() will call
+QAbstractItemViewPrivate::executePostedLayout() which may invalidate
+all the QModelIndex.
+
+Reviewed-by: Olivier
+Task-number: QTBUG-16292
+---
+ src/gui/itemviews/qtreeview.cpp |   11 ++++++-----
+ 1 files changed, 6 insertions(+), 5 deletions(-)
+
+diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp
+index f1f3236..c0573bb 100644
+--- a/src/gui/itemviews/qtreeview.cpp
++++ b/src/gui/itemviews/qtreeview.cpp
+@@ -2753,6 +2753,7 @@ int QTreeView::indexRowSizeHint(const QModelIndex &index) const
+ 
+     int start = -1;
+     int end = -1;
++    int indexRow = index.row();
+     int count = d->header->count();
+     bool emptyHeader = (count == 0);
+     QModelIndex parent = index.parent();
+@@ -2789,7 +2790,7 @@ int QTreeView::indexRowSizeHint(const QModelIndex &index) const
+         int logicalColumn = emptyHeader ? column : d->header->logicalIndex(column);
+         if (d->header->isSectionHidden(logicalColumn))
+             continue;
+-        QModelIndex idx = d->model->index(index.row(), logicalColumn, parent);
++        QModelIndex idx = d->model->index(indexRow, logicalColumn, parent);
+         if (idx.isValid()) {
+             QWidget *editor = d->editorForIndex(idx).editor;
+             if (editor && d->persistent.contains(editor)) {
+@@ -3224,14 +3225,14 @@ int QTreeViewPrivate::itemHeight(int item) const
+     if (viewItems.isEmpty())
+         return 0;
+     const QModelIndex &index = viewItems.at(item).index;
++    if (!index.isValid())
++        return 0;
+     int height = viewItems.at(item).height;
+-    if (height <= 0 && index.isValid()) {
++    if (height <= 0) {
+         height = q_func()->indexRowSizeHint(index);
+         viewItems[item].height = height;
+     }
+-    if (!index.isValid() || height < 0)
+-        return 0;
+-    return height;
++    return qMax(height, 0);
+ }
+ 
+ 
+-- 
+1.6.1
+




More information about the arch-commits mailing list