Hi, 

The following patch fix a crash in QTreeView.
It arrived too late to be pushed into this release...

OK?

Index: Makefile
===================================================================
RCS file: /cvs/ports/x11/qt4/Makefile,v
retrieving revision 1.85
diff -u -p -r1.85 Makefile
--- Makefile    17 May 2011 08:26:53 -0000      1.85
+++ Makefile    7 Jun 2011 11:28:11 -0000
@@ -23,6 +23,7 @@ PKGNAME-debug =               qt4-debug-${PKGVERSION}
 FULLPKGNAME-html =     qt4-html-${PKGVERSION}
 FULLPKGPATH-html =     ${BASE_PKGPATH},-html
 
+REVISION-main =                0
 REVISION-tds =         0
 
 SHARED_LIBS =  Qt3Support 8.0 \
Index: patches/patch-src_gui_itemviews_qtreeview_cpp
===================================================================
RCS file: patches/patch-src_gui_itemviews_qtreeview_cpp
diff -N patches/patch-src_gui_itemviews_qtreeview_cpp
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-src_gui_itemviews_qtreeview_cpp       7 Jun 2011 11:28:11 
-0000
@@ -0,0 +1,43 @@
+$OpenBSD$
+
+Fix QTreeView crash in indexRowSizeHint/itemHeight
+(http://bugreports.qt.nokia.com/browse/QTBUG-16292)
+
+--- src/gui/itemviews/qtreeview.cpp.orig       Wed Mar 30 07:19:05 2011
++++ src/gui/itemviews/qtreeview.cpp    Tue Jun  7 13:08:49 2011
+@@ -2753,6 +2753,7 @@ int QTreeView::indexRowSizeHint(const QModelIndex &ind
+ 
+     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 &ind
+         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);
+ }
+ 
+ 

Reply via email to