diff options
author | Nicolás Reynolds <fauno@kiwwwi.com.ar> | 2012-11-05 10:13:26 -0300 |
---|---|---|
committer | Nicolás Reynolds <fauno@kiwwwi.com.ar> | 2012-11-05 10:13:26 -0300 |
commit | d333dde0a4d6295e9530ab8e988efa1d654e8716 (patch) | |
tree | d48731194cdad2fb424ac33b6162669321a504b2 /extra/qt | |
parent | 7d1ef93386fa989f029f02c870375cd8de31129d (diff) | |
parent | c973e7aa43bb6c3bb4e25503eea40ddee63fcefd (diff) |
Merge branch 'master' of ssh://vparabola/home/parabola/abslibre-pre-mips64el
Conflicts:
community/blobby2/PKGBUILD
community/gtk2hs-buildtools/PKGBUILD
extra/qt/PKGBUILD
Diffstat (limited to 'extra/qt')
-rw-r--r-- | extra/qt/PKGBUILD | 38 | ||||
-rw-r--r-- | extra/qt/fix-qtscript-crash.patch | 34 | ||||
-rw-r--r-- | extra/qt/qsortfilterproxymodel.patch | 63 |
3 files changed, 119 insertions, 16 deletions
diff --git a/extra/qt/PKGBUILD b/extra/qt/PKGBUILD index 111fad187..046413ade 100644 --- a/extra/qt/PKGBUILD +++ b/extra/qt/PKGBUILD @@ -1,11 +1,11 @@ -# $Id: PKGBUILD 167191 2012-09-27 12:38:07Z andrea $ +# $Id: PKGBUILD 170186 2012-11-04 10:04:35Z andrea $ # Maintainer: Andrea Scarpino <andrea@archlinux.org> # Contributor: Pierre Schmitz <pierre@archlinux.de> pkgbase=qt pkgname=('qt' 'qt-private-headers') pkgver=4.8.3 -pkgrel=4 +pkgrel=5 arch=('i686' 'x86_64' 'mips64el') url='http://qt-project.org/' license=('GPL3' 'LGPL') @@ -21,9 +21,10 @@ source=("http://releases.qt-project.org/qt4/source/${_pkgfqn}.tar.gz" 'qtconfig.desktop' 'improve-cups-support.patch' 'fix-crash-in-assistant.patch' - 'undo-fix-jit-crash-on-x86_64.patch' - 'declarative-fix-sigbus.patch' - 'disable-ssl-compression.patch') + 'declarative-fix-sigbus.patch' + 'disable-ssl-compression.patch' + 'fix-qtscript-crash.patch' + 'qsortfilterproxymodel.patch') md5sums=('a663b6c875f8d7caa8ac9c30e4a4ec3b' 'fc211414130ab2764132e7370f8e5caa' '85179f5e0437514f8639957e1d8baf62' @@ -31,12 +32,13 @@ md5sums=('a663b6c875f8d7caa8ac9c30e4a4ec3b' '6b771c8a81dd90b45e8a79afa0e5bbfd' 'c439c7731c25387352d8453ca7574971' '57590084078b6379f0501f7728b02ae2' - '094e5a4e30e52423c77daa4a9c782df5' - 'aac963d05a9d5733e2bfce9e26607f51' - '94e9e433342018bf35e8d6d968b7432c') + 'aac963d05a9d5733e2bfce9e26607f51' + '94e9e433342018bf35e8d6d968b7432c' + '71579422635e9343665de1c1ba5a3f91' + 'cd550cd628d10459128ca5f231ca6d3f') build() { - cd "${srcdir}"/${_pkgfqn} + cd ${_pkgfqn} # MIPS N32-specific fix, shouldn't affect correctness on other platforms. patch -Np1 -i "${srcdir}/declarative-fix-sigbus.patch" @@ -47,11 +49,14 @@ build() { # (FS#29469) patch -p1 -i "${srcdir}"/fix-crash-in-assistant.patch - # (FS#31654) - patch -Rp1 -i "${srcdir}"/undo-fix-jit-crash-on-x86_64.patch - # Security fix patch -p1 -i "${srcdir}"/disable-ssl-compression.patch + + # QTBUG#27322 + patch -p1 -i "${srcdir}"/fix-qtscript-crash.patch + + # QTBUG#27122 + patch -p1 -i "${srcdir}"/qsortfilterproxymodel.patch export QT4DIR="${srcdir}"/${_pkgfqn} export LD_LIBRARY_PATH=${QT4DIR}/lib:${LD_LIBRARY_PATH} @@ -105,10 +110,11 @@ package_qt() { [ "$CARCH" != "mips64el" ] && optdepends+=('libfbclient: Firebird/iBase driver') optdepends+=('libxinerama: Xinerama support' 'libxcursor: Xcursor support' - 'libxfixes: Xfixes support') + 'libxfixes: Xfixes support' + 'icu: Unicode support') install='qt.install' - cd "${srcdir}"/${_pkgfqn} + cd ${_pkgfqn} make INSTALL_ROOT="${pkgdir}" install # install missing icons and desktop files @@ -148,11 +154,11 @@ package_qt-private-headers(){ install -d "${pkgdir}"/usr/src/{corelib,declarative,gui,script} for i in QtCore QtDeclarative QtGui QtScript; do - cp -r "${srcdir}"/${_pkgfqn}/include/${i}/private/ \ + cp -r ${_pkgfqn}/include/${i}/private/ \ "${pkgdir}"/usr/include/${i}/ done for i in corelib declarative gui script; do - cp -r "${srcdir}"/${_pkgfqn}/src/${i} "${pkgdir}"/usr/src/ + cp -r ${_pkgfqn}/src/${i} "${pkgdir}"/usr/src/ done } diff --git a/extra/qt/fix-qtscript-crash.patch b/extra/qt/fix-qtscript-crash.patch new file mode 100644 index 000000000..97b1cc62d --- /dev/null +++ b/extra/qt/fix-qtscript-crash.patch @@ -0,0 +1,34 @@ +From e6b7178bc2e62a37b4737695bced1b46bced9215 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C4=99drzej=20Nowacki?= <jedrzej.nowacki@digia.com> +Date: Mon, 22 Oct 2012 15:17:19 +0200 +Subject: [PATCH] Fix mmap usage. + +Add missing MAP_NORESERVE and fix error checking. + +Special thanks to Olivier JG for debugging the issue. + +Task-number: QTBUG-27322 +Change-Id: Ia9f4aa80415f0127318714912b524131a5b0f18a +Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> +--- + .../JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp b/src/3rdparty/javascriptcore/JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp +index 16d0fb1..e1237e4 100644 +--- a/src/3rdparty/javascriptcore/JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp ++++ b/src/3rdparty/javascriptcore/JavaScriptCore/jit/ExecutableAllocatorFixedVMPool.cpp +@@ -305,8 +305,8 @@ public: + randomLocation += (1 << 24); + randomLocation <<= 21; + #endif +- m_base = mmap(reinterpret_cast<void*>(randomLocation), m_totalHeapSize, INITIAL_PROTECTION_FLAGS, MAP_PRIVATE | MAP_ANON, VM_TAG_FOR_EXECUTABLEALLOCATOR_MEMORY, 0); +- if (!m_base) ++ m_base = mmap(reinterpret_cast<void*>(randomLocation), m_totalHeapSize, INITIAL_PROTECTION_FLAGS, MAP_PRIVATE | MAP_ANON | MAP_NORESERVE, VM_TAG_FOR_EXECUTABLEALLOCATOR_MEMORY, 0); ++ if (m_base == MAP_FAILED) + CRASH(); + + // For simplicity, we keep all memory in m_freeList in a 'released' state. +-- +1.8.0 + diff --git a/extra/qt/qsortfilterproxymodel.patch b/extra/qt/qsortfilterproxymodel.patch new file mode 100644 index 000000000..33770e47d --- /dev/null +++ b/extra/qt/qsortfilterproxymodel.patch @@ -0,0 +1,63 @@ +From 989e6c5ee6f3e38b24632ec5caf49c5b03d17aed Mon Sep 17 00:00:00 2001 +From: Stephen Kelly <stephen.kelly@kdab.com> +Date: Fri, 14 Sep 2012 15:42:34 +0200 +Subject: [PATCH] Fix crash when invalidating a QSortFilterProxyModel + +Backport of d7a15fbfd93fb566c7793596ea50d8786b9eb654 from qtbase. + +Task-number: QTBUG-27122 +Change-Id: I0b1eda292fd9648e6f08629f7a069b66bb8b59e8 +Reviewed-by: Olivier Goffart <ogoffart@woboq.com> +--- + src/gui/itemviews/qsortfilterproxymodel.cpp | 28 +++++++--- + .../tst_qsortfilterproxymodel.cpp | 61 ++++++++++++++++++++++ + 2 files changed, 83 insertions(+), 6 deletions(-) + +diff --git a/src/gui/itemviews/qsortfilterproxymodel.cpp b/src/gui/itemviews/qsortfilterproxymodel.cpp +index d937b63..9fe224e 100644 +--- a/src/gui/itemviews/qsortfilterproxymodel.cpp ++++ b/src/gui/itemviews/qsortfilterproxymodel.cpp +@@ -1036,18 +1036,34 @@ void QSortFilterProxyModelPrivate::filter_changed(const QModelIndex &source_pare + Mapping *m = it.value(); + QSet<int> rows_removed = handle_filter_changed(m->proxy_rows, m->source_rows, source_parent, Qt::Vertical); + QSet<int> columns_removed = handle_filter_changed(m->proxy_columns, m->source_columns, source_parent, Qt::Horizontal); +- QVector<QModelIndex> mappedChildren = m->mapped_children; +- QVector<QModelIndex>::iterator it2 = mappedChildren.end(); +- while (it2 != mappedChildren.begin()) { +- --it2; +- const QModelIndex source_child_index = *it2; ++ ++ // We need to iterate over a copy of m->mapped_children because otherwise it may be changed by other code, invalidating ++ // the iterator it2. ++ // The m->mapped_children vector can be appended to with indexes which are no longer filtered ++ // out (in create_mapping) when this function recurses for child indexes. ++ const QVector<QModelIndex> mappedChildren = m->mapped_children; ++ QVector<int> indexesToRemove; ++ for (int i = 0; i < mappedChildren.size(); ++i) { ++ const QModelIndex source_child_index = mappedChildren.at(i); + if (rows_removed.contains(source_child_index.row()) || columns_removed.contains(source_child_index.column())) { +- it2 = mappedChildren.erase(it2); ++ indexesToRemove.push_back(i); + remove_from_mapping(source_child_index); + } else { + filter_changed(source_child_index); + } + } ++ QVector<int>::const_iterator removeIt = indexesToRemove.constEnd(); ++ const QVector<int>::const_iterator removeBegin = indexesToRemove.constBegin(); ++ ++ // We can't just remove these items from mappedChildren while iterating above and then ++ // do something like m->mapped_children = mappedChildren, because mapped_children might ++ // be appended to in create_mapping, and we would lose those new items. ++ // Because they are always appended in create_mapping, we can still remove them by ++ // position here. ++ while (removeIt != removeBegin) { ++ --removeIt; ++ m->mapped_children.remove(*removeIt); ++ } + } + + /*! +-- +1.8.0 + |