diff options
author | root <root@rshg054.dnsready.net> | 2012-04-16 00:01:18 +0000 |
---|---|---|
committer | root <root@rshg054.dnsready.net> | 2012-04-16 00:01:18 +0000 |
commit | ea3d877b99c32e3a9e00ab220440d4518430e5bc (patch) | |
tree | 8cf0d286f935fd9e00eb3854d971c165c749d7bf /extra/qt | |
parent | f06b9295f0e60a0faa0d3231a0d0b3f2358d8459 (diff) |
Mon Apr 16 00:01:18 UTC 2012
Diffstat (limited to 'extra/qt')
-rw-r--r-- | extra/qt/PKGBUILD | 27 | ||||
-rw-r--r-- | extra/qt/fix-buffer-overflow.patch | 34 | ||||
-rw-r--r-- | extra/qt/fix-cursortox-crash.patch | 32 | ||||
-rw-r--r-- | extra/qt/improve-cups-support.patch | 84 |
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 + } + + /*! |