summaryrefslogtreecommitdiff
path: root/extra/qt
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2012-04-16 00:01:18 +0000
committerroot <root@rshg054.dnsready.net>2012-04-16 00:01:18 +0000
commitea3d877b99c32e3a9e00ab220440d4518430e5bc (patch)
tree8cf0d286f935fd9e00eb3854d971c165c749d7bf /extra/qt
parentf06b9295f0e60a0faa0d3231a0d0b3f2358d8459 (diff)
Mon Apr 16 00:01:18 UTC 2012
Diffstat (limited to 'extra/qt')
-rw-r--r--extra/qt/PKGBUILD27
-rw-r--r--extra/qt/fix-buffer-overflow.patch34
-rw-r--r--extra/qt/fix-cursortox-crash.patch32
-rw-r--r--extra/qt/improve-cups-support.patch84
4 files changed, 171 insertions, 6 deletions
diff --git a/extra/qt/PKGBUILD b/extra/qt/PKGBUILD
index bc13e5ef8..1db4ad683 100644
--- a/extra/qt/PKGBUILD
+++ b/extra/qt/PKGBUILD
@@ -1,15 +1,15 @@
-# $Id: PKGBUILD 154524 2012-03-29 20:18:01Z andrea $
+# $Id: PKGBUILD 156133 2012-04-14 10:06:17Z andrea $
# Maintainer: Andrea Scarpino <andrea@archlinux.org>
# Contributor: Pierre Schmitz <pierre@archlinux.de>
pkgbase=qt
pkgname=('qt' 'qt-private-headers')
pkgver=4.8.1
-pkgrel=1
+pkgrel=2
arch=('i686' 'x86_64')
url='http://qt-project.org/'
license=('GPL3' 'LGPL')
-makedepends=('libtiff' 'libpng' 'libmng' 'sqlite3' 'ca-certificates' 'glib2' 'dbus'
+makedepends=('libtiff' 'libpng' 'libmng' 'sqlite' 'ca-certificates' 'glib2' 'dbus'
'fontconfig' 'libgl' 'libsm' 'libxrandr' 'libxv' 'libxi' 'alsa-lib'
'xdg-utils' 'hicolor-icon-theme' 'desktop-file-utils' 'mesa' 'postgresql-libs'
'mysql' 'unixodbc' 'cups' 'gtk2')
@@ -18,18 +18,33 @@ _pkgfqn="${pkgbase}-everywhere-opensource-src-${pkgver}"
source=("http://get.qt.nokia.com/qt/source/${_pkgfqn}.tar.gz"
'assistant.desktop' 'designer.desktop' 'linguist.desktop'
'qtconfig.desktop'
- 'gcc47.patch')
+ 'gcc47.patch'
+ 'improve-cups-support.patch'
+ 'fix-buffer-overflow.patch'
+ 'fix-cursortox-crash.patch')
md5sums=('7960ba8e18ca31f0c6e4895a312f92ff'
'fc211414130ab2764132e7370f8e5caa'
'85179f5e0437514f8639957e1d8baf62'
'f11852b97583610f3dbb669ebc3e21bc'
'6b771c8a81dd90b45e8a79afa0e5bbfd'
- 'd8a0e81075b290ddc18ecd33b9b7ee22')
+ 'd8a0e81075b290ddc18ecd33b9b7ee22'
+ 'c439c7731c25387352d8453ca7574971'
+ 'c493dca3c11fffb9af6719c6735cb0d2'
+ '13171b6aec2f240be05feb968178f70e')
build() {
cd "${srcdir}"/${_pkgfqn}
patch -p1 -i "${srcdir}"/gcc47.patch
+
+ # (FS#29158)
+ patch -p1 -i "${srcdir}"/fix-buffer-overflow.patch
+
+ # (FS#29402) (QTBUG#24718)
+ patch -p1 -i "${srcdir}"/fix-cursortox-crash.patch
+
+ # (FS#28381) (KDEBUG#180051)
+ patch -p1 -i "${srcdir}"/improve-cups-support.patch
export QT4DIR="${srcdir}"/${_pkgfqn}
export LD_LIBRARY_PATH=${QT4DIR}/lib:${LD_LIBRARY_PATH}
@@ -69,7 +84,7 @@ build() {
package_qt() {
pkgdesc='A cross-platform application and UI framework'
- depends=('libtiff' 'libpng' 'libmng' 'sqlite3' 'ca-certificates' 'glib2' 'dbus'
+ depends=('libtiff' 'libpng' 'libmng' 'sqlite' 'ca-certificates' 'glib2' 'dbus'
'fontconfig' 'libgl' 'libsm' 'libxrandr' 'libxv' 'libxi' 'alsa-lib'
'xdg-utils' 'hicolor-icon-theme' 'desktop-file-utils')
optdepends=('postgresql-libs: PostgreSQL driver'
diff --git a/extra/qt/fix-buffer-overflow.patch b/extra/qt/fix-buffer-overflow.patch
new file mode 100644
index 000000000..f0334f247
--- /dev/null
+++ b/extra/qt/fix-buffer-overflow.patch
@@ -0,0 +1,34 @@
+From 827e5c4c689d4ecb4f8c1ab48c9a7ab712fe2ca7 Mon Sep 17 00:00:00 2001
+From: John Tapsell <john.tapsell.ext@basyskom.com>
+Date: Mon, 12 Mar 2012 22:07:47 +0000
+Subject: [PATCH] Harfbuzz-thai - fix buffer overflow when setting item
+ attributes
+
+Change-Id: I19eeb4ec25a7c6cb3f584e6290169f9f327b8713
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@nokia.com>
+---
+ src/3rdparty/harfbuzz/src/harfbuzz-thai.c | 9 +++++-
+ .../qtextscriptengine/tst_qtextscriptengine.cpp | 29 ++++++++++++++++++++
+ 2 files changed, 36 insertions(+), 2 deletions(-)
+
+diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-thai.c b/src/3rdparty/harfbuzz/src/harfbuzz-thai.c
+index bf6c35b..3c0ffe8 100644
+--- a/src/3rdparty/harfbuzz/src/harfbuzz-thai.c
++++ b/src/3rdparty/harfbuzz/src/harfbuzz-thai.c
+@@ -263,8 +263,13 @@ static HB_Bool HB_ThaiConvertStringToGlyphIndices (HB_ShaperItem *item)
+ // The only glyphs that should be passed to this function that cannot be mapped to
+ // tis620 are the ones of type Inherited class. Pass these glyphs untouched.
+ glyphString[slen++] = string[i];
+- if (string[i] == 0x200D || string[i] == 0x200C)
+- item->attributes[slen-1].dontPrint = true; // Hide ZWJ and ZWNJ characters
++ if (string[i] == 0x200D || string[i] == 0x200C) {
++ // Check that we do not run out of bounds when setting item->attributes. If we do
++ // run out of bounds then this function will return false, the necessary amount of
++ // memory is reallocated, and this function will then be called again.
++ if (slen <= item->num_glyphs)
++ item->attributes[slen-1].dontPrint = true; // Hide ZWJ and ZWNJ characters
++ }
+ } else {
+ glyphString[slen++] = (HB_UChar16) thai_get_glyph_index (font_type, rglyphs[lgi]);
+ }
+
diff --git a/extra/qt/fix-cursortox-crash.patch b/extra/qt/fix-cursortox-crash.patch
new file mode 100644
index 000000000..fbc9c1370
--- /dev/null
+++ b/extra/qt/fix-cursortox-crash.patch
@@ -0,0 +1,32 @@
+Index: fix-cursortox-crash.patch
+===================================================================
+--- fix-cursortox-crash.patch (revision 0)
++++ fix-cursortox-crash.patch (arbetskopia)
+#commit cac12f4592477d99ef6fffaad40345bf85ef53b5
+#Author: Jiang Jiang <jiang.jiang@nokia.com>
+#Date: Mon Apr 2 12:32:05 2012 +0200
+#
+# Fix a crash in cursorToX() when new block is added
+#
+# When an empty new block is being added, the layoutData->memory data
+# will be 0, thus QTextEngine::attributes() will return 0. We should
+# only access the attributes pointer when some text actually exist.
+#
+# Task-number: QTBUG-24718
+# Change-Id: I9ce9f7b57bccf24099a02832ce30fb6cebfaad33
+#
+diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp
+index ee658d9..16f7150 100644
+--- a/src/gui/text/qtextlayout.cpp
++++ b/src/gui/text/qtextlayout.cpp
+@@ -2508,6 +2508,10 @@ qreal QTextLine::cursorToX(int *cursorPos, Edge edge) const
+ int pos = *cursorPos;
+ int itm;
+ const HB_CharAttributes *attributes = eng->attributes();
++ if (!attributes) {
++ *cursorPos = 0;
++ return x.toReal();
++ }
+ while (pos < line.from + line.length && !attributes[pos].charStop)
+ pos++;
+ if (pos == line.from + (int)line.length) {
diff --git a/extra/qt/improve-cups-support.patch b/extra/qt/improve-cups-support.patch
new file mode 100644
index 000000000..e0305e11b
--- /dev/null
+++ b/extra/qt/improve-cups-support.patch
@@ -0,0 +1,84 @@
+diff -ur qt-everywhere-opensource-src-4.6.2/src/gui/dialogs/qprintdialog_unix.cpp qt-everywhere-opensource-src-4.6.2-cups/src/gui/dialogs/qprintdialog_unix.cpp
+--- qt-everywhere-opensource-src-4.6.2/src/gui/dialogs/qprintdialog_unix.cpp 2010-02-11 16:55:22.000000000 +0100
++++ qt-everywhere-opensource-src-4.6.2-cups/src/gui/dialogs/qprintdialog_unix.cpp 2010-02-28 04:34:16.000000000 +0100
+@@ -569,6 +569,32 @@
+ void QPrintDialogPrivate::selectPrinter(QCUPSSupport *cups)
+ {
+ options.duplex->setEnabled(cups && cups->ppdOption("Duplex"));
++
++ if (cups) {
++ const ppd_option_t* duplex = cups->ppdOption("Duplex");
++ if (duplex) {
++ // copy default ppd duplex to qt dialog
++ if (qstrcmp(duplex->defchoice, "DuplexTumble") == 0)
++ options.duplexShort->setChecked(true);
++ else if (qstrcmp(duplex->defchoice, "DuplexNoTumble") == 0)
++ options.duplexLong->setChecked(true);
++ else
++ options.noDuplex->setChecked(true);
++ }
++
++ if (cups->currentPPD()) {
++ // set default color
++ if (cups->currentPPD()->color_device)
++ options.color->setChecked(true);
++ else
++ options.grayscale->setChecked(true);
++ }
++
++ // set collation
++ const ppd_option_t *collate = cups->ppdOption("Collate");
++ if (collate)
++ options.collate->setChecked(qstrcmp(collate->defchoice, "True")==0);
++ }
+ }
+ #endif
+
+diff -ur qt-everywhere-opensource-src-4.6.2/src/gui/painting/qprinter.cpp qt-everywhere-opensource-src-4.6.2-cups/src/gui/painting/qprinter.cpp
+--- qt-everywhere-opensource-src-4.6.2/src/gui/painting/qprinter.cpp 2010-02-11 16:55:22.000000000 +0100
++++ qt-everywhere-opensource-src-4.6.2-cups/src/gui/painting/qprinter.cpp 2010-02-28 04:55:15.000000000 +0100
+@@ -627,6 +627,44 @@
+ && d_ptr->paintEngine->type() != QPaintEngine::MacPrinter) {
+ setOutputFormat(QPrinter::PdfFormat);
+ }
++
++#if !defined(QT_NO_CUPS) && !defined(QT_NO_LIBRARY)
++ // fill in defaults from ppd file
++ QCUPSSupport cups;
++
++ int printernum = -1;
++ for (int i = 0; i < cups.availablePrintersCount(); i++) {
++ if (printerName().toLocal8Bit() == cups.availablePrinters()[i].name)
++ printernum = i;
++ }
++ if (printernum >= 0) {
++ cups.setCurrentPrinter(printernum);
++
++ const ppd_option_t* duplex = cups.ppdOption("Duplex");
++ if (duplex) {
++ // copy default ppd duplex to qt dialog
++ if (qstrcmp(duplex->defchoice, "DuplexTumble") == 0)
++ setDuplex(DuplexShortSide);
++ else if (qstrcmp(duplex->defchoice, "DuplexNoTumble") == 0)
++ setDuplex(DuplexLongSide);
++ else
++ setDuplex(DuplexNone);
++ }
++
++ if (cups.currentPPD()) {
++ // set default color
++ if (cups.currentPPD()->color_device)
++ setColorMode(Color);
++ else
++ setColorMode(GrayScale);
++ }
++
++ // set collation
++ const ppd_option_t *collate = cups.ppdOption("Collate");
++ if (collate)
++ setCollateCopies(qstrcmp(collate->defchoice, "True")==0);
++ }
++#endif
+ }
+
+ /*!