summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Palimaka <kensington@gentoo.org>2014-12-04 11:40:14 +0000
committerMichael Palimaka <kensington@gentoo.org>2014-12-04 11:40:14 +0000
commit3ee4587c0d822efbc5bb482c085c76e01e5b28db (patch)
tree1d8d772196ff5587698b5ba05b1c05d89c0899e1 /kde-base
parentCall python_optimize, bug 531638 (diff)
downloadhistorical-3ee4587c0d822efbc5bb482c085c76e01e5b28db.tar.gz
historical-3ee4587c0d822efbc5bb482c085c76e01e5b28db.tar.bz2
historical-3ee4587c0d822efbc5bb482c085c76e01e5b28db.zip
Backport patch from upstream solving a crash wrt bug #530646.
Package-Manager: portage-2.2.15/cvs/Linux x86_64 Manifest-Sign-Key: 0x06B1F38DCA45A1EC!
Diffstat (limited to 'kde-base')
-rw-r--r--kde-base/kdelibs/ChangeLog8
-rw-r--r--kde-base/kdelibs/Manifest30
-rw-r--r--kde-base/kdelibs/files/kdelibs-4.14.3-trim-crash.patch610
-rw-r--r--kde-base/kdelibs/kdelibs-4.14.3-r1.ebuild306
4 files changed, 939 insertions, 15 deletions
diff --git a/kde-base/kdelibs/ChangeLog b/kde-base/kdelibs/ChangeLog
index 009b5390e225..c061d669cb74 100644
--- a/kde-base/kdelibs/ChangeLog
+++ b/kde-base/kdelibs/ChangeLog
@@ -1,6 +1,12 @@
# ChangeLog for kde-base/kdelibs
# Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/kde-base/kdelibs/ChangeLog,v 1.1035 2014/12/03 15:04:58 kensington Exp $
+# $Header: /var/cvsroot/gentoo-x86/kde-base/kdelibs/ChangeLog,v 1.1036 2014/12/04 11:39:50 kensington Exp $
+
+*kdelibs-4.14.3-r1 (04 Dec 2014)
+
+ 04 Dec 2014; Michael Palimaka <kensington@gentoo.org>
+ +files/kdelibs-4.14.3-trim-crash.patch, +kdelibs-4.14.3-r1.ebuild:
+ Backport patch from upstream solving a crash wrt bug #530646.
03 Dec 2014; Michael Palimaka <kensington@gentoo.org> kdelibs-4.14.3.ebuild:
Introduce crypt USE flag.
diff --git a/kde-base/kdelibs/Manifest b/kde-base/kdelibs/Manifest
index b6d1036aa0c4..e28de72b8f8f 100644
--- a/kde-base/kdelibs/Manifest
+++ b/kde-base/kdelibs/Manifest
@@ -8,6 +8,7 @@ AUX kdelibs-4.13.1-kio-diskfree.patch 1845 SHA256 85e4d8fe871ea3aba8bcb50140540d
AUX kdelibs-4.13.2-CVE-2014-3494.patch 2695 SHA256 4a8382341b750b7170c50363145a360dd698882b6a9fe833cf6573bf292ab3ea SHA512 3c515d13f3673bc72d0d024166327343c0283c08bc68d214e4cf092bb14da436ca70467a84afefce6ed15a1d062253281e5b9b381e80ef7b781ef751fdb7ff25 WHIRLPOOL 707b0ac561a853a142f90284ba6797081c8e5660e1a1e1c0c4fd2f431dd9666d6e9d6a83d382c6f09bbc99891d7342c65fd81ed0077578750b2c433ba1b30dd7
AUX kdelibs-4.13.3-CVE-2014-5033.patch 2063 SHA256 456e20ded57839bcecc3d84fe2abe965de8891139ed41220468b0642f472259e SHA512 887ce9561f6b99c891623607e709e39a9286189a4b00dd1f7d1691c48b3edc5819c21a09d37439c5738be6674ffe0ad7dbee46fa7af7c259a0bc1e25662f9b41 WHIRLPOOL cd8ec1712bfc5474473df37731d2a85dca2b0ecf32e44012c9cf0680ea8a860785066a9410f6d16e14b5edea4f21f9bb80cd58dd7cb626fdc63cd4f1e6c6a21f
AUX kdelibs-4.14.0-mimetypes.patch 1187 SHA256 40cbbf358f11504abfa494508d8d83a4b47ee3cffe30d7076e03ad6f7e0e354c SHA512 fcdb9d5d03782cec401d95fe5ec9f4addda0d586de9ebbf6bad7bb8b402b248e3d24dc5a73f41456474fa2d65f33473d9d1d7d77557bec4da3805e0c31d42541 WHIRLPOOL b39ec794a32b114d4d268fc5849c65e2295921ae34cf608690a06ce5a6d403ddb61c539cc5bd4c17faa29fc2077162ef2a519e1710153a34a4268f3413f36cd6
+AUX kdelibs-4.14.3-trim-crash.patch 28725 SHA256 070fd14403c797d18360f6c5bd9a0b36d8b50c7a41cc28d1d220a7a6c66f0233 SHA512 3b72c021aa5a4c10799296e1858f03adcdfac34f9f83bdee4c7357502314b2bc92fd5f137021657c157723da894a362e818d875fee95f965e7d82a3fbbc1bdb8 WHIRLPOOL 3f0f3a84cf320c9b5f7be2e1bbcea4e3d1d9942f0b9e1ebd277eab310f1e539b5c9ea19e6554ffc70fc2f1d279cbb3e939d617661e250027f3364726a9a78a57
AUX kdelibs-4.3.80-kdeui_util_kkeyserver_mac.patch 2210 SHA256 3602e079a4788feceff27f7f6bcaeff33828c259a81d0357f7df092000f98a6a SHA512 9207f2ab33e757d3d8ed3279350ea4326339129f232bb67bcce7b3806480fe551c9ba03a93d289df311e913055c343c925f957eb0b0b24bec6a7ef59017090a2 WHIRLPOOL f63b26fc0657f7e72856b493fc469af1cfaa68bb18b1dd4078f9dae44c37a3bdec9114c6a2c92c55b2cdde4d7cbc2ea072df1157b26e43f844dccf16ec8b1f8d
AUX kdelibs-4.4.90-xslt.patch 553 SHA256 ffb7b7f44d3e840d1fe5e3b1d859db74f6bf534d44160f48e0f91993200ab55b SHA512 0016a0cb2f4a93cc2a9638a74c8aa42759830304abf97b608393099093a35205bcdfbd0a8a6d501f6628119de34d39c7a40cac9ed99bff7081c651f678533dea WHIRLPOOL 8fd53eb3a5bb083b12f1ff1e68f5ba9208a5badd0210944bf62297899a7416d61cbd29d24adc02024b70789bad289abafcfa24b02370e5ea5929b39022dc6f46
AUX kdelibs-4.6.2-armlinking.patch 1129 SHA256 9b076d1587bb02b85353f3a155199fd6dace7d1c76f189667787bca89192dee6 SHA512 d0208e095e751d4064e3f9b7d836135bce8c7f1cb7b4f1a20ef4d86d2fd5a08523c563c72ab86a871929000f26e4d50fa58fd81f7996edc57066984ce508ff1d WHIRLPOOL 81535f48c1ab14e37fd0dae7751317e72c53f4c55d4c28be67db8c6782af9a0a5e1ee3aba48680b8d367c9b6dda4d0e481392826b5eb597e1965bfbff70aaf38
@@ -20,25 +21,26 @@ DIST kdelibs-4.14.2.tar.xz 11597872 SHA256 39745a77f019cc1280374aa5de02fbf961393
DIST kdelibs-4.14.3.tar.xz 11600500 SHA256 f8206da1106184ef0bd031b82701c4910b8dade331c4cdaf1cd9c6c5208cfd9e SHA512 7713cec4851fd4d7d5376afd905515902395ca469cefe1924c05ac0cd4499c28ab6a3c3e7bee10c4cfb3584f2fe93cfb6129d5b550d56d18217866f5fde748cf WHIRLPOOL 9b6d525136cee8e43b832dbbe7451494cc30e15cc58cc34eeab8c9040a9cbe893dc8ba794be50cdb3462e20279bfb41bee22385d3d106a353ef738da510f5c04
EBUILD kdelibs-4.12.5-r2.ebuild 8687 SHA256 766c49e483380970b54134ef1a3cb49d8a84bdbe718a83f44adc23e0feff675f SHA512 e5d52fb6fb265b95f49808a08d6da06607f3905e5296344ddcad8e7ebee8c218bb7b271c583654369f31f4e4e817cddd4633cd3908ded0b2162df21fa08ea1fa WHIRLPOOL 37af099002f5bb8c66853114436d9f881677d30797897e098eb0a5416d47fc57283847741385d2c9d4e81946be424ae94bcb11300c7b710b46521a870edf3d15
EBUILD kdelibs-4.14.2.ebuild 8593 SHA256 37d02d042bcaa1079ef14978b68a196d0ee88b690eaf33967bd2ee650f9ac8a2 SHA512 42e32a9b51a4d06ec75c656ea130deeb58010959f61f2bd094cae034c70be86d545dc8e613d2944337665444a01dd31c43bc3bc1a439e7b02b08d62f130bda9d WHIRLPOOL 1c7c445b650b8c31799922484141c503281bca6d362006a0a522ba5436991708470be0e57b0b30c7670926391f1d81672101a0a8c9de75cd4023a568ed6a6fdb
+EBUILD kdelibs-4.14.3-r1.ebuild 8699 SHA256 55dd58bc9786233f16b28d3b55bf513f384b13e1260e1ec0964d62d8d0209c11 SHA512 cde0de66b6c1147731db853108c1e888a44dc3538033c1ac3fa387d19dbe6367debc33f0abbe45c30ad06c70c38bc5920da8e6fe80620435e4eee32cb06270b9 WHIRLPOOL 0f02a68518de298a719ad662c9f86503cb38c0e2e4a571af1d0fdf4bcb00f9f813ff260125a2e4943b2e9aeda4afcec3dd01920045fb1c24fa5e7b83603c6a97
EBUILD kdelibs-4.14.3.ebuild 8651 SHA256 05bd8e7b30cee28e8226df0aa6f6ffd0e008aa1366af2ad2cadde13c9bb4976b SHA512 759d7e6ab7f8dd83a7c450d93eb095d47007a55a9149e8d35850f2b12b8918cb54942187f4099392989c3b09ade16af11124b8a0f60d90811ef7a283ef4d24cf WHIRLPOOL b2fec9587869adafecb04b2487b832a6ab0cf469a7006c5e6928d1d177e8f11b2be231e578d859fee20894b42883157dc1ccc969b35222202298d62aff5355e0
-MISC ChangeLog 60107 SHA256 29355a47bec8b8faffb58db56591a0f5593810296537e5a986003b62c2b02b12 SHA512 5e002f5aa7d4c2ca072fa1abdb4163a45c0d6bd20359e6641125d25d562feb60b3929dfc9777a51503de9e12b2c7253fb1e11fe2e33bc451b45018e0e943d428 WHIRLPOOL 4eec4c0452fbb3915300c467aa5151e2938dfc9f035e2aa5428fd933a3d342b58e94569ecfa0a0807fe0efa6c4f0478f39840695e365b61b83fafdafb2b7c4c8
+MISC ChangeLog 60331 SHA256 d24ea7ad1cbe28c024d606e3a47accefaa90fd5517c5c1e1e46631e08e7b8399 SHA512 79bdf479f43ae83c66fc979be525efd615b40595c16fe309ed51918ce8f8a91b96bb9b4403b5ce872ad017c6d2ef7ced109f589ab79d970c05e64dca6ae36f7d WHIRLPOOL ffca1c59e771d9de74913a9620c258972ca4521c11c1448d9494aa6c39a4518485ce57c258b3bf751575b38c3e52ca4cb680b406e53054105668573e2f27ebb4
MISC ChangeLog-2009 110608 SHA256 845ba7764dc9cabd4753d146e82cc0347a0dbbe21a76a4aab453106e7d70ba1f SHA512 c643c3bd742f1c2c4322217b4d9f2992310e9bf86f585ef687cf68f54ed2a86d2950f7f3c3fc5021a2dd472b6db39e17415ca6cde478e4ef4f91317a116889b5 WHIRLPOOL 8dd58bffc294a811176bc3f9882a0fa8a12c02fcdd692bacfccfc9745646d5062d3980553388fcdc835bbbecefd0783f029d07a5999e7208ceece5a93fa36893
MISC metadata.xml 335 SHA256 ce5c36bcfe52e7bc12d4c7fb83f64b01fd52f5b329365cadd44bd9d59b1e3a3a SHA512 efc588b15e3096574a9ecf0d0edf99f979197cc0e33b2710fd7babb16f2dcaf3cff22197e9fb429ef97590a1288410f77cd987e5c03b3dac8c85236b9af751e6 WHIRLPOOL 6f8cba5c16126a196fb424944b9c12322579ccbe8165821e5cb11611f941a664dee1a31f52927a346da165c25cd829c1f0187e40d209e5ef7c0af7e1afac3347
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0
-iQJiBAEBCABMBQJUfya+RRSAAAAAABQAKGlzc3Vlci1mcHJAbm90YXRpb25zOTc5
+iQJiBAEBCABMBQJUgEgnRRSAAAAAABQAKGlzc3Vlci1mcHJAbm90YXRpb25zOTc5
MTY5NkQ3RDM3NkRBN0U5QjZGMTUwMDZCMUYzOERDQTQ1QTFFQwAKCRAGsfONykWh
-7G0oEACH8d4zXltRMUcbZT3BdHoR0k9uAlZ5tYRNIYEjsvNcxjTGirT1EiBFSNiU
-nMJlXxz1waGqyHa4GWqzwoG//xuBEVkCYUsKmPOIIjT52gmkBv0zdOyokmr351N5
-cZ0gN/JsMg96LRrqAoEm1tuRZKV0NaYBwEBIO6dDG4Q9gANFTbUFq6IFoufnxVtr
-+HaRU27H8m50RkQM2TXdJEwfR0jl0U+/ivTDyQSgHjbqzgpozVvgfBr0nePFsDIm
-g8PVDhPvtAgDSB2D7cVAQisqpi1Any1nxZlKe15HO0gAjDsoDsuZjs0bb5glxcL8
-HGcEM7Kb3IAv/M+cBqUrT1YBWKlyWJEK2HZijZVVrLwJJA7/CkBKhRFRoMP+uhYz
-/A6uu1OkaU4DHf8UGjMmVzT5ctlahMn3GOhTlapHC6+K+3aPp+gChWYXiBwIK6dh
-94q6onccVK8V8VDro+EnZ23i3JCfUsyRR42/y1smF79ClyfouE+DuOyhRzivZgb/
-eFKC3BS3lGTIm9kfKvGjaS5tgyDr3h0w/CPbhIRJkeaYrii8+kbNUB48ouU2Y9G4
-fJ0urjKkzHrL8qGPzha1uedj1B9IO6WInu06UpcXSsOq5I0mmH670Tj481qEpniK
-+7z2gQ9Tk8DeUSYWjyXCk3oZ4cqFKECe4HJzBWGDsqFInDO+UQ==
-=y1BF
+7JN6D/9vAdUGugK+IIhxJKO8t6ruLR8sh1G08h4MXDsJfP9wzUITJ/Pb4wNBv51H
+yzpB9OLAdC/SLNWTEWeCOH3lHRT+XN2KBy7J/Tz1K/B0T3pd7XExVAbNnq2eummS
+pGvqGces5JijwTLa603GiLOP69mZBUYONxP0ry/VojOmo9fDhVvcM5bNu0rpoqN8
+AWAzogmDLHzxgEsMgCbcibXGLYiEdSv0Ole+ljSX6CsRJ9uRQ7kA/P0iSTdLfudE
+yJjiXxqzA2WRVdTs46KJlC2khdVB9W1dhhDvyDysVgo2IkYEU0LQFSsjV9+BU13/
+ONTof6feQ3/xfc+RpquxPaZAEHGSdNE/glzxpqgAmAV+QnCWS37uirt7WsZBygFX
+BsjmNR98UJCpe1ShvVTZSeEwW6HjPetFnWVr2eV3srGylxiNR9kLDFZxW6QMPGf/
+otBn959Og7CSdjANk0rsVshh8i2mHxHimZF4bA5qgifrKY8rCJINDMsk9PfIs8k+
+xFx/Kiv6D6RktIwKgGgwl9xtT1LHdF98xYbHS83I5GPDCIw+A8niLQR+f8psVrwA
+PHtgPTskMsQl1676w2kYz26E5/GvvHG6ghiWQ83X4bbQBd1L2H3UQNe7qIeT+tn9
+teq4ok1Fy8OJ26o7+ejXPzfg22VLtDL62Iw4ocTxkWKTOWl89A==
+=xRR1
-----END PGP SIGNATURE-----
diff --git a/kde-base/kdelibs/files/kdelibs-4.14.3-trim-crash.patch b/kde-base/kdelibs/files/kdelibs-4.14.3-trim-crash.patch
new file mode 100644
index 000000000000..12c84dcfe93e
--- /dev/null
+++ b/kde-base/kdelibs/files/kdelibs-4.14.3-trim-crash.patch
@@ -0,0 +1,610 @@
+From 570425a30c008297df09ef48b60486108fcf33e9 Mon Sep 17 00:00:00 2001
+From: Andrea Iacovitti <aiacovitti@libero.it>
+Date: Tue, 11 Nov 2014 07:54:28 +0100
+Subject: [PATCH] Introduce DOMString::trimSpaces(), useful for removing space
+ characters from url string.
+
+---
+ khtml/css/css_valueimpl.cpp | 4 ++--
+ khtml/css/cssparser.cpp | 4 ++--
+ khtml/dom/dom_string.cpp | 32 ++++++++++++++++++++++++++++++++
+ khtml/dom/dom_string.h | 7 +++++++
+ khtml/dom/html_base.cpp | 8 ++++----
+ khtml/dom/html_document.cpp | 2 +-
+ khtml/dom/html_form.cpp | 4 ++--
+ khtml/dom/html_head.cpp | 12 ++++++------
+ khtml/dom/html_image.cpp | 8 ++++----
+ khtml/dom/html_inline.cpp | 4 ++--
+ khtml/ecma/kjs_html.cpp | 4 ++--
+ khtml/ecma/xmlhttprequest.cpp | 3 ++-
+ khtml/html/html_baseimpl.cpp | 6 +++---
+ khtml/html/html_formimpl.cpp | 2 +-
+ khtml/html/html_headimpl.cpp | 12 ++++++------
+ khtml/html/html_imageimpl.cpp | 6 +++---
+ khtml/html/html_inlineimpl.cpp | 2 +-
+ khtml/html/html_objectimpl.cpp | 4 ++--
+ khtml/html/html_tableimpl.cpp | 4 ++--
+ khtml/html/htmlparser.cpp | 4 ++--
+ khtml/html/htmlprospectivetokenizer.cpp | 4 ++--
+ khtml/khtml_part.cpp | 4 ++--
+ khtml/khtmlview.cpp | 2 +-
+ khtml/rendering/render_image.cpp | 8 ++++----
+ khtml/xml/dom_docimpl.cpp | 7 ++++---
+ 25 files changed, 99 insertions(+), 58 deletions(-)
+
+diff --git a/khtml/css/css_valueimpl.cpp b/khtml/css/css_valueimpl.cpp
+index 98f33e6..aa825b7 100644
+--- a/khtml/css/css_valueimpl.cpp
++++ b/khtml/css/css_valueimpl.cpp
+@@ -1383,9 +1383,9 @@ CSSImageValueImpl::CSSImageValueImpl(const DOMString &url, StyleBaseImpl* style)
+ : CSSPrimitiveValueImpl(url, CSSPrimitiveValue::CSS_URI)
+ {
+ m_image = 0;
+- const QString imgUrl = url.string().trimmed();
++ const DOMString imgUrl = url.trimSpaces();
+ if (!imgUrl.isEmpty()) {
+- m_fullImageUrl = KUrl(style->baseURL(), imgUrl).url();
++ m_fullImageUrl = KUrl(style->baseURL(), imgUrl.string()).url();
+ } else {
+ m_fullImageUrl.clear();
+ }
+diff --git a/khtml/css/cssparser.cpp b/khtml/css/cssparser.cpp
+index e8f8493..600d205 100644
+--- a/khtml/css/cssparser.cpp
++++ b/khtml/css/cssparser.cpp
+@@ -2309,8 +2309,8 @@ bool CSSParser::parseFontFaceSrc()
+ while ((val = valueList->current())) {
+ CSSFontFaceSrcValueImpl* parsedValue = 0;
+ if (val->unit == CSSPrimitiveValue::CSS_URI && !expectComma && styleElement) {
+- const QString uri = qString(val->string).trimmed();
+- parsedValue = new CSSFontFaceSrcValueImpl(DOMString(KUrl(styleElement->baseURL(), uri).url()), false /*local*/);
++ const DOMString uri = domString(val->string).trimSpaces();
++ parsedValue = new CSSFontFaceSrcValueImpl(DOMString(KUrl(styleElement->baseURL(), uri.string()).url()), false /*local*/);
+ uriValue = parsedValue;
+ allowFormat = true;
+ expectComma = true;
+diff --git a/khtml/dom/dom_string.cpp b/khtml/dom/dom_string.cpp
+index d54d037..4a10221 100644
+--- a/khtml/dom/dom_string.cpp
++++ b/khtml/dom/dom_string.cpp
+@@ -290,6 +290,38 @@ bool DOMString::startsWith(const DOMString& str) const
+ return impl->startsWith(str.implementation());
+ }
+
++static inline bool isSpaceCharacter(const ushort &c)
++{
++ // http://dev.w3.org/html5/spec-LC/common-microsyntaxes.html#space-character
++ return ((c < 0x0021) &&
++ (c == 0x0020 || c == 0x0009 || c == 0x000A || c == 0x000C || c == 0x000D));
++}
++
++DOMString DOMString::trimSpaces() const
++{
++ if (!impl || !impl->l) {
++ return *this;
++ }
++
++ const QChar *s = impl->s;
++ unsigned int start = 0;
++ unsigned int end = impl->l - 1;
++
++ while ((start <= end) && isSpaceCharacter(s[start].unicode())) {
++ ++start;
++ }
++
++ if (start > end) {
++ return DOMString("");
++ }
++
++ while (end && isSpaceCharacter(s[end].unicode())) {
++ --end;
++ }
++
++ return new DOMStringImpl(s + start, end - start + 1);
++}
++
+ // ------------------------------------------------------------------------
+
+ bool DOM::strcasecmp( const DOMString &as, const DOMString &bs )
+diff --git a/khtml/dom/dom_string.h b/khtml/dom/dom_string.h
+index 13b4265..84b1378 100644
+--- a/khtml/dom/dom_string.h
++++ b/khtml/dom/dom_string.h
+@@ -125,6 +125,13 @@ public:
+ bool startsWith(const DOMString& str) const;
+
+ /**
++ * Returns a string with Space Characters removed from the start and the end.
++ * Space Characters as defined in
++ * http://dev.w3.org/html5/spec-LC/common-microsyntaxes.html#space-character
++ */
++ DOMString trimSpaces() const;
++
++ /**
+ * @internal get a handle to the imlementation of the DOMString
+ * Use at own risk!!!
+ */
+diff --git a/khtml/dom/html_base.cpp b/khtml/dom/html_base.cpp
+index c5e9048..11ee331 100644
+--- a/khtml/dom/html_base.cpp
++++ b/khtml/dom/html_base.cpp
+@@ -231,8 +231,8 @@ void HTMLFrameElement::setScrolling( const DOMString &value )
+ DOMString HTMLFrameElement::src() const
+ {
+ if(!impl) return DOMString();
+- const QString s = ((ElementImpl *)impl)->getAttribute(ATTR_SRC).string().trimmed();
+- return !s.isNull() ? impl->document()->completeURL(s) : DOMString();
++ const DOMString s = ((ElementImpl *)impl)->getAttribute(ATTR_SRC).trimSpaces();
++ return !s.isNull() ? impl->document()->completeURL(s.string()) : s;
+ }
+
+ void HTMLFrameElement::setSrc( const DOMString &value )
+@@ -367,8 +367,8 @@ void HTMLIFrameElement::setScrolling( const DOMString &value )
+ DOMString HTMLIFrameElement::src() const
+ {
+ if(!impl) return DOMString();
+- const QString s = ((ElementImpl *)impl)->getAttribute(ATTR_SRC).string().trimmed();
+- return !s.isNull() ? impl->document()->completeURL(s) : DOMString();
++ const DOMString s = ((ElementImpl *)impl)->getAttribute(ATTR_SRC).trimSpaces();
++ return !s.isNull() ? impl->document()->completeURL(s.string()) : s;
+ }
+
+ void HTMLIFrameElement::setSrc( const DOMString &value )
+diff --git a/khtml/dom/html_document.cpp b/khtml/dom/html_document.cpp
+index 042bc5a..2acf683 100644
+--- a/khtml/dom/html_document.cpp
++++ b/khtml/dom/html_document.cpp
+@@ -100,7 +100,7 @@ DOMString HTMLDocument::referrer() const
+ DOMString HTMLDocument::completeURL(const DOMString& str) const
+ {
+ if(!impl) return str;
+- return ((HTMLDocumentImpl *)impl)->completeURL(str.string().trimmed());
++ return ((HTMLDocumentImpl *)impl)->completeURL(str.trimSpaces().string());
+ }
+
+ DOMString HTMLDocument::domain() const
+diff --git a/khtml/dom/html_form.cpp b/khtml/dom/html_form.cpp
+index 425cb3d..6d44261 100644
+--- a/khtml/dom/html_form.cpp
++++ b/khtml/dom/html_form.cpp
+@@ -504,8 +504,8 @@ void HTMLInputElement::setSize( long value )
+ DOMString HTMLInputElement::src() const
+ {
+ if(!impl) return DOMString();
+- const QString s = static_cast<ElementImpl*>(impl)->getAttribute(ATTR_SRC).string().trimmed();
+- return !s.isNull() ? impl->document()->completeURL(s) : DOMString();
++ const DOMString s = static_cast<ElementImpl*>(impl)->getAttribute(ATTR_SRC).trimSpaces();
++ return !s.isNull() ? impl->document()->completeURL(s.string()) : s;
+ }
+
+ void HTMLInputElement::setSrc( const DOMString &value )
+diff --git a/khtml/dom/html_head.cpp b/khtml/dom/html_head.cpp
+index 4812631..23fe125 100644
+--- a/khtml/dom/html_head.cpp
++++ b/khtml/dom/html_head.cpp
+@@ -58,8 +58,8 @@ HTMLBaseElement::~HTMLBaseElement()
+ DOMString HTMLBaseElement::href() const
+ {
+ if(!impl) return DOMString();
+- const QString href = static_cast<ElementImpl*>(impl)->getAttribute(ATTR_HREF).string().trimmed();
+- return !href.isNull() ? impl->document()->completeURL(href) : DOMString();
++ const DOMString href = static_cast<ElementImpl*>(impl)->getAttribute(ATTR_HREF).trimSpaces();
++ return !href.isNull() ? impl->document()->completeURL(href.string()) : href;
+ }
+
+ void HTMLBaseElement::setHref( const DOMString &value )
+@@ -134,8 +134,8 @@ void HTMLLinkElement::setCharset( const DOMString &value )
+ DOMString HTMLLinkElement::href() const
+ {
+ if(!impl) return DOMString();
+- const QString href = static_cast<ElementImpl*>(impl)->getAttribute(ATTR_HREF).string().trimmed();
+- return !href.isNull() ? impl->document()->completeURL(href) : DOMString();
++ const DOMString href = static_cast<ElementImpl*>(impl)->getAttribute(ATTR_HREF).trimSpaces();
++ return !href.isNull() ? impl->document()->completeURL(href.string()) : href;
+ }
+
+ void HTMLLinkElement::setHref( const DOMString &value )
+@@ -379,8 +379,8 @@ void HTMLScriptElement::setDefer( bool _defer )
+ DOMString HTMLScriptElement::src() const
+ {
+ if(!impl) return DOMString();
+- const QString s = ((ElementImpl *)impl)->getAttribute(ATTR_SRC).string().trimmed();
+- return !s.isNull() ? impl->document()->completeURL(s) : DOMString();
++ const DOMString s = ((ElementImpl *)impl)->getAttribute(ATTR_SRC).trimSpaces();
++ return !s.isNull() ? impl->document()->completeURL(s.string()) : s;
+ }
+
+ void HTMLScriptElement::setSrc( const DOMString &value )
+diff --git a/khtml/dom/html_image.cpp b/khtml/dom/html_image.cpp
+index db1f5ea..a8b4ae0 100644
+--- a/khtml/dom/html_image.cpp
++++ b/khtml/dom/html_image.cpp
+@@ -95,8 +95,8 @@ void HTMLAreaElement::setCoords( const DOMString &value )
+ DOMString HTMLAreaElement::href() const
+ {
+ if(!impl) return DOMString();
+- const QString href = static_cast<ElementImpl*>(impl)->getAttribute(ATTR_HREF).string().trimmed();
+- return !href.isNull() ? impl->document()->completeURL(href) : DOMString();
++ const DOMString href = static_cast<ElementImpl*>(impl)->getAttribute(ATTR_HREF).trimSpaces();
++ return !href.isNull() ? impl->document()->completeURL(href.string()) : href;
+ }
+
+ void HTMLAreaElement::setHref( const DOMString &value )
+@@ -302,8 +302,8 @@ void HTMLImageElement::setLongDesc( const DOMString &value )
+ DOMString HTMLImageElement::src() const
+ {
+ if(!impl) return DOMString();
+- const QString s = ((ElementImpl *)impl)->getAttribute(ATTR_SRC).string().trimmed();
+- return !s.isNull() ? impl->document()->completeURL(s) : DOMString();
++ const DOMString s = ((ElementImpl *)impl)->getAttribute(ATTR_SRC).trimSpaces();
++ return !s.isNull() ? impl->document()->completeURL(s.string()) : s;
+ }
+
+ void HTMLImageElement::setSrc( const DOMString &value )
+diff --git a/khtml/dom/html_inline.cpp b/khtml/dom/html_inline.cpp
+index c01f668..2f74713 100644
+--- a/khtml/dom/html_inline.cpp
++++ b/khtml/dom/html_inline.cpp
+@@ -95,8 +95,8 @@ void HTMLAnchorElement::setCoords( const DOMString &value )
+ DOMString HTMLAnchorElement::href() const
+ {
+ if(!impl) return DOMString();
+- const QString href = static_cast<ElementImpl*>(impl)->getAttribute(ATTR_HREF).string().trimmed();
+- return !href.isNull() ? impl->document()->completeURL(href) : DOMString();
++ const DOMString href = static_cast<ElementImpl*>(impl)->getAttribute(ATTR_HREF).trimSpaces();
++ return !href.isNull() ? impl->document()->completeURL(href.string()) : href;
+ }
+
+ void HTMLAnchorElement::setHref( const DOMString &value )
+diff --git a/khtml/ecma/kjs_html.cpp b/khtml/ecma/kjs_html.cpp
+index ea15929..d5693af 100644
+--- a/khtml/ecma/kjs_html.cpp
++++ b/khtml/ecma/kjs_html.cpp
+@@ -1587,8 +1587,8 @@ QHash<int, const HTMLElement::BoundPropInfo*>* HTMLElement::boundPropInfo()
+
+ QString KJS::HTMLElement::getURLArg(unsigned id) const
+ {
+- const QString rel = impl()->getAttribute(id).string().trimmed();
+- return !rel.isNull() ? impl()->document()->completeURL(rel) : rel;
++ const DOMString rel = impl()->getAttribute(id).trimSpaces();
++ return !rel.isNull() ? impl()->document()->completeURL(rel.string()) : QString();
+ }
+
+ DOM::HTMLElementImpl *toHTMLElement(JSValue *val) {
+diff --git a/khtml/ecma/xmlhttprequest.cpp b/khtml/ecma/xmlhttprequest.cpp
+index f9fae5d..45c5a4b 100644
+--- a/khtml/ecma/xmlhttprequest.cpp
++++ b/khtml/ecma/xmlhttprequest.cpp
+@@ -906,7 +906,8 @@ JSValue *XMLHttpRequestProtoFunc::callAsFunction(ExecState *exec, JSObject *this
+ return throwError(exec, SyntaxError, "Not enough arguments");
+
+ QString method = args[0]->toString(exec).qstring();
+- KUrl url = KUrl(request->doc->completeURL(args[1]->toString(exec).qstring()));
++ DOMString urlArg = args[1]->toString(exec).domString().trimSpaces();
++ KUrl url = KUrl(request->doc->completeURL(urlArg.string()));
+
+ bool async = true;
+ if (args.size() >= 3) {
+diff --git a/khtml/html/html_baseimpl.cpp b/khtml/html/html_baseimpl.cpp
+index 5b4a77a..102b56e 100644
+--- a/khtml/html/html_baseimpl.cpp
++++ b/khtml/html/html_baseimpl.cpp
+@@ -71,7 +71,7 @@ void HTMLBodyElementImpl::parseAttribute(AttributeImpl *attr)
+
+ case ATTR_BACKGROUND:
+ {
+- QString url = attr->val()->string().trimmed();
++ QString url = attr->value().trimSpaces().string();
+ if (!url.isEmpty()) {
+ url = document()->completeURL( url );
+ addCSSProperty(CSS_PROP_BACKGROUND_IMAGE, DOMString("url('"+url+"')") );
+@@ -325,7 +325,7 @@ void HTMLFrameElementImpl::parseAttribute(AttributeImpl *attr)
+ switch(attr->id())
+ {
+ case ATTR_SRC:
+- setLocation(attr->value().string().trimmed());
++ setLocation(attr->value().trimSpaces().string());
+ break;
+ case ATTR_FRAMEBORDER:
+ {
+@@ -755,7 +755,7 @@ void HTMLIFrameElementImpl::parseAttribute(AttributeImpl *attr )
+ addHTMLAlignment( attr->value() );
+ break;
+ case ATTR_SRC:
+- url = attr->value().string().trimmed();
++ url = attr->value().trimSpaces().string();
+ setNeedComputeContent();
+ // ### synchronously start the process?
+ break;
+diff --git a/khtml/html/html_formimpl.cpp b/khtml/html/html_formimpl.cpp
+index 134851a..d227481 100644
+--- a/khtml/html/html_formimpl.cpp
++++ b/khtml/html/html_formimpl.cpp
+@@ -679,7 +679,7 @@ void HTMLFormElementImpl::submit( )
+ }
+ #endif // KHTML_NO_WALLET
+
+- QString url = getAttribute(ATTR_ACTION).string().trimmed();
++ QString url = getAttribute(ATTR_ACTION).trimSpaces().string();
+ // ignore base url if 'action' attribute is empty.
+ if (url.isEmpty())
+ url = formUrl.url();
+diff --git a/khtml/html/html_headimpl.cpp b/khtml/html/html_headimpl.cpp
+index 0de904d..a265ae1 100644
+--- a/khtml/html/html_headimpl.cpp
++++ b/khtml/html/html_headimpl.cpp
+@@ -55,7 +55,7 @@ void HTMLBaseElementImpl::parseAttribute(AttributeImpl *attr)
+ switch(attr->id())
+ {
+ case ATTR_HREF:
+- m_href = attr->value().string().trimmed();
++ m_href = attr->value().trimSpaces().string();
+ process();
+ break;
+ case ATTR_TARGET:
+@@ -116,9 +116,9 @@ void HTMLLinkElementImpl::parseAttribute(AttributeImpl *attr)
+ switch (attr->id())
+ {
+ case ATTR_HREF: {
+- const QString hrefUrl = attr->val()->string().trimmed();
++ const DOMString hrefUrl = attr->value().trimSpaces();
+ if (!hrefUrl.isEmpty()) {
+- m_url = document()->completeURL(hrefUrl);
++ m_url = document()->completeURL(hrefUrl.string());
+ }
+ process();
+ break;
+@@ -385,7 +385,7 @@ void HTMLScriptElementImpl::parseAttribute(AttributeImpl *attr)
+ // we'll only start doing things once we get insertedIntoDocument()
+ if (m_evaluated || m_cachedScript || m_createdByParser || !inDocument())
+ return;
+- QString url = attr->value().string().trimmed();
++ const DOMString url = attr->value().trimSpaces();
+ if (!url.isEmpty())
+ loadFromUrl(url);
+ break;
+@@ -490,7 +490,7 @@ void HTMLScriptElementImpl::insertedIntoDocument()
+ if (m_createdByParser)
+ return;
+
+- QString url = getAttribute(ATTR_SRC).string().trimmed();
++ const DOMString url = getAttribute(ATTR_SRC).trimSpaces();
+ if (!url.isEmpty()) {
+ loadFromUrl(url);
+ return;
+@@ -622,7 +622,7 @@ void HTMLScriptElementImpl::setDefer(bool defer)
+
+ DOMString HTMLScriptElementImpl::src() const
+ {
+- return document()->completeURL(getAttribute(ATTR_SRC).string().trimmed());
++ return document()->completeURL(getAttribute(ATTR_SRC).trimSpaces().string());
+ }
+
+ void HTMLScriptElementImpl::setSrc(const DOMString &value)
+diff --git a/khtml/html/html_imageimpl.cpp b/khtml/html/html_imageimpl.cpp
+index 51695a8..15a8302 100644
+--- a/khtml/html/html_imageimpl.cpp
++++ b/khtml/html/html_imageimpl.cpp
+@@ -84,7 +84,7 @@ void HTMLImageElementImpl::parseAttribute(AttributeImpl *attr)
+ setChanged();
+
+ //Start loading the image already, to generate events
+- const QString imgSrcUrl = attr->value().string().trimmed();
++ const DOMString imgSrcUrl = attr->value().trimSpaces();
+ if (!imgSrcUrl.isEmpty()) { //### why do we not hide or something when setting this?
+ CachedImage* newImage = document()->docLoader()->requestImage(imgSrcUrl);
+ if (newImage && newImage != m_image) {
+@@ -151,7 +151,7 @@ void HTMLImageElementImpl::parseAttribute(AttributeImpl *attr)
+ if ( attr->value()[0] == '#' )
+ usemap = attr->value().lower();
+ else {
+- QString url = document()->completeURL(attr->value().string().trimmed());
++ QString url = document()->completeURL(attr->value().trimSpaces().string());
+ // ### we remove the part before the anchor and hope
+ // the map is on the same html page....
+ usemap = url;
+@@ -438,7 +438,7 @@ void HTMLMapElementImpl::parseAttribute(AttributeImpl *attr)
+ }
+ else {
+ // add name with full url:
+- const QString url = document()->completeURL(attr->value().string().trimmed());
++ const QString url = document()->completeURL(attr->value().trimSpaces().string());
+ if(document()->isHTMLDocument())
+ static_cast<HTMLDocumentImpl*>(document())->mapMap[url] = this;
+ }
+diff --git a/khtml/html/html_inlineimpl.cpp b/khtml/html/html_inlineimpl.cpp
+index fc2e6f6..6e9bdd8 100644
+--- a/khtml/html/html_inlineimpl.cpp
++++ b/khtml/html/html_inlineimpl.cpp
+@@ -81,7 +81,7 @@ void HTMLAnchorElementImpl::defaultEventHandler(EventImpl *evt)
+ if (k->qKeyEvent()) k->qKeyEvent()->accept();
+ }
+
+- QString url = getAttribute(ATTR_HREF).string().trimmed();
++ QString url = getAttribute(ATTR_HREF).trimSpaces().string();
+ QString utarget = getAttribute(ATTR_TARGET).string();
+
+ if ( e && e->button() == 1 )
+diff --git a/khtml/html/html_objectimpl.cpp b/khtml/html/html_objectimpl.cpp
+index 863afe6..f5aef26 100644
+--- a/khtml/html/html_objectimpl.cpp
++++ b/khtml/html/html_objectimpl.cpp
+@@ -695,7 +695,7 @@ void HTMLEmbedElementImpl::parseAttribute(AttributeImpl *attr)
+ {
+ case ATTR_CODE:
+ case ATTR_SRC:
+- url = attr->val()->string().trimmed();
++ url = attr->value().trimSpaces().string();
+ setNeedComputeContent();
+ break;
+ case ATTR_BORDER:
+@@ -775,7 +775,7 @@ void HTMLObjectElementImpl::parseAttribute(AttributeImpl *attr)
+ switch ( attr->id() )
+ {
+ case ATTR_DATA:
+- url = attr->val()->string().trimmed();
++ url = attr->value().trimSpaces().string();
+ setNeedComputeContent();
+ break;
+ case ATTR_CLASSID:
+diff --git a/khtml/html/html_tableimpl.cpp b/khtml/html/html_tableimpl.cpp
+index 8323093..c135545 100644
+--- a/khtml/html/html_tableimpl.cpp
++++ b/khtml/html/html_tableimpl.cpp
+@@ -495,7 +495,7 @@ void HTMLTableElementImpl::parseAttribute(AttributeImpl *attr)
+ break;
+ case ATTR_BACKGROUND:
+ {
+- QString url = attr->val()->string().trimmed();
++ QString url = attr->value().trimSpaces().string();
+ if (!url.isEmpty()) {
+ url = document()->completeURL( url );
+ addCSSProperty(CSS_PROP_BACKGROUND_IMAGE, DOMString("url('"+url+"')") );
+@@ -638,7 +638,7 @@ void HTMLTablePartElementImpl::parseAttribute(AttributeImpl *attr)
+ break;
+ case ATTR_BACKGROUND:
+ {
+- QString url = attr->val()->string().trimmed();
++ QString url = attr->value().trimSpaces().string();
+ if (!url.isEmpty()) {
+ url = document()->completeURL( url );
+ addCSSProperty(CSS_PROP_BACKGROUND_IMAGE, DOMString("url('"+url+"')") );
+diff --git a/khtml/html/htmlparser.cpp b/khtml/html/htmlparser.cpp
+index ce5be3e..49b8068 100644
+--- a/khtml/html/htmlparser.cpp
++++ b/khtml/html/htmlparser.cpp
+@@ -974,7 +974,7 @@ NodeImpl *KHTMLParser::getElement(Token* t)
+ KHTMLGlobal::defaultHTMLSettings()->isHideAdsEnabled() &&
+ !strcasecmp( t->attrs->getValue( ATTR_TYPE ), "image" ) )
+ {
+- const QString url = doc()->completeURL(t->attrs->getValue(ATTR_SRC)->string().trimmed());
++ const QString url = doc()->completeURL(DOMString(t->attrs->getValue(ATTR_SRC)).trimSpaces().string());
+ if (KHTMLGlobal::defaultHTMLSettings()->isAdFiltered(url))
+ return 0;
+ }
+@@ -1104,7 +1104,7 @@ NodeImpl *KHTMLParser::getElement(Token* t)
+ KHTMLGlobal::defaultHTMLSettings()->isAdFilterEnabled()&&
+ KHTMLGlobal::defaultHTMLSettings()->isHideAdsEnabled())
+ {
+- const QString url = doc()->completeURL(t->attrs->getValue(ATTR_SRC)->string().trimmed());
++ const QString url = doc()->completeURL(DOMString(t->attrs->getValue(ATTR_SRC)).trimSpaces().string());
+ if (KHTMLGlobal::defaultHTMLSettings()->isAdFiltered(url))
+ return 0;
+ }
+diff --git a/khtml/html/htmlprospectivetokenizer.cpp b/khtml/html/htmlprospectivetokenizer.cpp
+index 83c4c16..585a449 100644
+--- a/khtml/html/htmlprospectivetokenizer.cpp
++++ b/khtml/html/htmlprospectivetokenizer.cpp
+@@ -706,7 +706,7 @@ void ProspectiveTokenizer::processAttribute()
+ LocalName attrLocal = LocalName::fromString(&attrDS, IDS_NormalizeLower);
+ uint attribute = attrLocal.id();
+ if (attribute == localNamePart(ATTR_SRC) && m_urlToLoad.isEmpty())
+- m_urlToLoad = DOMString(QString(m_attributeValue.data(), m_attributeValue.size()).trimmed());
++ m_urlToLoad = DOMString(m_attributeValue.data(), m_attributeValue.size()).trimSpaces();
+ break;
+ }
+ case ID_LINK:
+@@ -715,7 +715,7 @@ void ProspectiveTokenizer::processAttribute()
+ LocalName attrLocal = LocalName::fromString(&attrDS, IDS_NormalizeLower);
+ uint attribute = attrLocal.id();
+ if (attribute == localNamePart(ATTR_HREF) && m_urlToLoad.isEmpty())
+- m_urlToLoad = DOMString(QString(m_attributeValue.data(), m_attributeValue.size()).trimmed());
++ m_urlToLoad = DOMString(m_attributeValue.data(), m_attributeValue.size()).trimSpaces();
+ else if (attribute == localNamePart(ATTR_REL)) {
+ DOMStringImpl* lowerAttribute = DOMStringImpl(DOMStringImpl::ShallowCopy, m_attributeValue.data(), m_attributeValue.size()).lower();
+ QString val = lowerAttribute->string();
+diff --git a/khtml/khtml_part.cpp b/khtml/khtml_part.cpp
+index 15ea3c9..6c4ed17 100644
+--- a/khtml/khtml_part.cpp
++++ b/khtml/khtml_part.cpp
+@@ -6420,7 +6420,7 @@ bool KHTMLPart::handleMouseMoveEventDrag(khtml::MouseMoveEvent *event)
+ if (url.isEmpty() && innerNodeImpl && innerNodeImpl->id() == ID_IMG)
+ {
+ img = static_cast<HTMLImageElementImpl *>(innerNodeImpl);
+- u = completeURL(img->getAttribute(ATTR_SRC).string().trimmed());
++ u = completeURL(img->getAttribute(ATTR_SRC).trimSpaces().string());
+ pix = KIconLoader::global()->loadIcon("image-x-generic", KIconLoader::Desktop);
+ }
+ else
+@@ -6719,7 +6719,7 @@ void KHTMLPart::runAdFilter()
+ node->id() == ID_IFRAME ||
+ (node->id() == ID_INPUT && static_cast<HTMLInputElementImpl *>(node)->inputType() == HTMLInputElementImpl::IMAGE ))
+ {
+- if (KHTMLGlobal::defaultHTMLSettings()->isAdFiltered(d->m_doc->completeURL(static_cast<ElementImpl *>(node)->getAttribute(ATTR_SRC).string().trimmed())))
++ if (KHTMLGlobal::defaultHTMLSettings()->isAdFiltered(d->m_doc->completeURL(static_cast<ElementImpl *>(node)->getAttribute(ATTR_SRC).trimSpaces().string())))
+ {
+ // Since any kids of node will be deleted, too, fastforward nextNode
+ // until we get outside of node.
+diff --git a/khtml/khtmlview.cpp b/khtml/khtmlview.cpp
+index 0c4e317..8078fdc 100644
+--- a/khtml/khtmlview.cpp
++++ b/khtml/khtmlview.cpp
+@@ -2780,7 +2780,7 @@ QMap< ElementImpl*, QChar > KHTMLView::buildFallbackAccessKeys() const
+ bool text_before = false;
+ switch( element->id()) {
+ case ID_A:
+- url = element->getAttribute(ATTR_HREF).string().trimmed();
++ url = element->getAttribute(ATTR_HREF).trimSpaces().string();
+ if( url.isEmpty()) // doesn't have href, it's only an anchor
+ continue;
+ text = static_cast< HTMLElementImpl* >( element )->innerText().string().simplified();
+diff --git a/khtml/rendering/render_image.cpp b/khtml/rendering/render_image.cpp
+index dee27ab..6741858 100644
+--- a/khtml/rendering/render_image.cpp
++++ b/khtml/rendering/render_image.cpp
+@@ -427,16 +427,16 @@ void RenderImage::updateFromElement()
+ else if (element()->id() == ID_IMG)
+ alt = static_cast<HTMLImageElementImpl*>(element())->altText();
+
+- const QString u = element()->id() == ID_OBJECT ?
+- element()->getAttribute(ATTR_DATA).string().trimmed() : element()->getAttribute(ATTR_SRC).string().trimmed();
++ const DOMString u = element()->id() == ID_OBJECT ?
++ element()->getAttribute(ATTR_DATA).trimSpaces() : element()->getAttribute(ATTR_SRC).trimSpaces();
+
+ if (!u.isEmpty()) {
+ // Need to compute completeURL, as 'u' can be relative
+ // while m_cachedImage->url() is always full url
+ DocumentImpl *docImpl = element()->document();
+- const QString fullUrl = docImpl->completeURL(u);
++ const QString fullUrl = docImpl->completeURL(u.string());
+ if (!m_cachedImage || m_cachedImage->url() != fullUrl) {
+- CachedImage *new_image = docImpl->docLoader()->requestImage(fullUrl);
++ CachedImage *new_image = docImpl->docLoader()->requestImage(DOMString(fullUrl));
+ if (new_image && new_image != m_cachedImage) {
+ updateImage(new_image);
+ }
+diff --git a/khtml/xml/dom_docimpl.cpp b/khtml/xml/dom_docimpl.cpp
+index 0a3e4ed..b8e5910 100644
+--- a/khtml/xml/dom_docimpl.cpp
++++ b/khtml/xml/dom_docimpl.cpp
+@@ -1979,7 +1979,7 @@ void DocumentImpl::processHttpEquiv(const DOMString &equiv, const DOMString &con
+ v->part()->scheduleRedirection(delay, v->part()->url().url() );
+ } else {
+ pos++;
+- while(pos < (int)str.length() && str[pos].isSpace()) pos++;
++ while(pos < str.length() && str[pos].isSpace()) pos++;
+ str = str.mid(pos);
+ if(str.indexOf("url", 0, Qt::CaseInsensitive ) == 0) str = str.mid(3);
+ str = str.trimmed();
+@@ -1987,7 +1987,8 @@ void DocumentImpl::processHttpEquiv(const DOMString &equiv, const DOMString &con
+ while (str.length() && (str[str.length()-1] == ';' || str[str.length()-1] == ',')) {
+ str.resize(str.length()-1);
+ }
+- QString newURL = document()->completeURL(str.trimmed());
++ str = DOMString(str).trimSpaces().string();
++ QString newURL = document()->completeURL(str);
+ if ( ok )
+ v->part()->scheduleRedirection(delay, newURL, delay < 2 || newURL == URL().url());
+ }
+@@ -2047,7 +2048,7 @@ bool DocumentImpl::prepareMouseEvent( bool readonly, int _x, int _y, MouseEvent
+ //qDebug("urlnode: %s (%d)", getTagName(renderInfo.URLElement()->id()).string().toLatin1().constData(), renderInfo.URLElement()->id());
+
+ ElementImpl* e = static_cast<ElementImpl*>(renderInfo.URLElement());
+- const DOMString href = e->getAttribute(ATTR_HREF).string().trimmed();
++ const DOMString href = e->getAttribute(ATTR_HREF).trimSpaces();
+ const DOMString target = e->getAttribute(ATTR_TARGET);
+
+ if (!target.isNull() && !href.isNull()) {
+--
+2.0.4
+
diff --git a/kde-base/kdelibs/kdelibs-4.14.3-r1.ebuild b/kde-base/kdelibs/kdelibs-4.14.3-r1.ebuild
new file mode 100644
index 000000000000..b5f22fef123c
--- /dev/null
+++ b/kde-base/kdelibs/kdelibs-4.14.3-r1.ebuild
@@ -0,0 +1,306 @@
+# Copyright 1999-2014 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/kde-base/kdelibs/kdelibs-4.14.3-r1.ebuild,v 1.1 2014/12/04 11:39:50 kensington Exp $
+
+EAPI=5
+
+CPPUNIT_REQUIRED="optional"
+DECLARATIVE_REQUIRED="always"
+OPENGL_REQUIRED="optional"
+KDE_HANDBOOK="optional"
+inherit kde4-base fdo-mime multilib toolchain-funcs flag-o-matic
+
+EGIT_BRANCH="KDE/4.14"
+
+DESCRIPTION="KDE libraries needed by all KDE programs"
+
+KEYWORDS="~amd64 ~arm ~ppc ~ppc64 ~x86 ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux"
+LICENSE="LGPL-2.1"
+IUSE="3dnow acl alsa altivec +bzip2 +crypt debug doc fam jpeg2k kerberos lzma mmx
+nepomuk nls openexr +policykit spell sse sse2 ssl +udev +udisks +upower
+zeroconf"
+
+REQUIRED_USE="
+ udisks? ( udev )
+ upower? ( udev )
+"
+
+# needs the kate regression testsuite from svn
+RESTRICT="test"
+
+COMMONDEPEND="
+ >=app-misc/strigi-0.7.7
+ app-text/docbook-xml-dtd:4.2
+ app-text/docbook-xsl-stylesheets
+ >=dev-libs/libattica-0.4.2
+ >=dev-libs/libdbusmenu-qt-0.3.2
+ dev-libs/libpcre[unicode]
+ dev-libs/libxml2
+ dev-libs/libxslt
+ media-libs/fontconfig
+ media-libs/freetype:2
+ media-libs/giflib
+ media-libs/libpng:0=
+ media-libs/phonon[qt4]
+ sys-libs/zlib
+ virtual/jpeg:0
+ >=x11-misc/shared-mime-info-0.60
+ acl? ( virtual/acl )
+ alsa? ( media-libs/alsa-lib )
+ !aqua? (
+ x11-libs/libICE
+ x11-libs/libSM
+ x11-libs/libX11
+ x11-libs/libXau
+ x11-libs/libXcursor
+ x11-libs/libXdmcp
+ x11-libs/libXext
+ x11-libs/libXfixes
+ x11-libs/libXft
+ x11-libs/libXpm
+ x11-libs/libXrender
+ x11-libs/libXScrnSaver
+ x11-libs/libXtst
+ !kernel_SunOS? (
+ || (
+ sys-libs/libutempter
+ >=sys-freebsd/freebsd-lib-9.0
+ )
+ )
+ )
+ bzip2? ( app-arch/bzip2 )
+ crypt? ( app-crypt/qca:2 )
+ fam? ( virtual/fam )
+ jpeg2k? ( media-libs/jasper )
+ kerberos? ( virtual/krb5 )
+ nepomuk? (
+ >=dev-libs/shared-desktop-ontologies-0.11.0
+ >=dev-libs/soprano-2.9.0[dbus,raptor,redland]
+ )
+ openexr? (
+ media-libs/openexr:=
+ media-libs/ilmbase:=
+ )
+ policykit? ( >=sys-auth/polkit-qt-0.103.0 )
+ spell? ( app-text/enchant )
+ ssl? ( dev-libs/openssl )
+ udev? ( virtual/udev )
+ zeroconf? ( net-dns/avahi[mdnsresponder-compat] )
+"
+DEPEND="${COMMONDEPEND}
+ doc? ( app-doc/doxygen )
+ nls? ( virtual/libintl )
+"
+RDEPEND="${COMMONDEPEND}
+ !dev-qt/qtphonon
+ !<=kde-base/plasma-workspace-4.7.1:4
+ !<=kde-base/kcontrol-4.4.50:4
+ >=app-crypt/gnupg-2.0.11
+ app-misc/ca-certificates
+ $(add_kdebase_dep kde-env)
+ sys-apps/dbus[X]
+ !aqua? (
+ udisks? ( sys-fs/udisks:2 )
+ x11-apps/iceauth
+ x11-apps/rgb
+ >=x11-misc/xdg-utils-1.0.2-r3
+ upower? ( || ( >=sys-power/upower-0.9.23 sys-power/upower-pm-utils ) )
+ )
+ udev? ( app-misc/media-player-info )
+"
+PDEPEND="
+ $(add_kdebase_dep katepart)
+ || (
+ $(add_kdebase_dep kfmclient)
+ x11-misc/xdg-utils
+ )
+ handbook? (
+ || (
+ $(add_kdebase_dep khelpcenter)
+ kde-base/khelpcenter:5[compat(+)]
+ )
+ )
+ nepomuk? (
+ $(add_kdebase_dep nepomuk-core)
+ $(add_kdebase_dep nepomuk-widgets)
+ )
+ policykit? (
+ >=sys-auth/polkit-kde-agent-0.99
+ )
+"
+
+PATCHES=(
+ "${FILESDIR}/dist/01_gentoo_set_xdg_menu_prefix-1.patch"
+ "${FILESDIR}/dist/02_gentoo_append_xdg_config_dirs-1.patch"
+ "${FILESDIR}/${PN}-4.14.0-mimetypes.patch"
+ "${FILESDIR}/${PN}-4.4.90-xslt.patch"
+ "${FILESDIR}/${PN}-4.6.2-armlinking.patch"
+ "${FILESDIR}/${PN}-4.6.3-no_suid_kdeinit.patch"
+ "${FILESDIR}/${PN}-4.8.1-norpath.patch"
+ "${FILESDIR}/${PN}-4.9.3-werror.patch"
+ "${FILESDIR}/${PN}-4.10.0-udisks.patch"
+ "${FILESDIR}/${PN}-4.14.3-trim-crash.patch"
+)
+
+pkg_pretend() {
+ if [[ ${MERGE_TYPE} != binary ]]; then
+ [[ $(gcc-major-version) -lt 4 ]] || \
+ ( [[ $(gcc-major-version) -eq 4 && $(gcc-minor-version) -le 3 ]] ) \
+ && die "Sorry, but gcc-4.3 and earlier won't work for KDE SC 4.6 (see bug #354837)."
+ fi
+}
+
+src_prepare() {
+ kde4-base_src_prepare
+
+ # Rename applications.menu (needs 01_gentoo_set_xdg_menu_prefix-1.patch to work)
+ sed -e 's|FILES[[:space:]]applications.menu|FILES applications.menu RENAME kde-4-applications.menu|g' \
+ -i kded/CMakeLists.txt || die "Sed on CMakeLists.txt for applications.menu failed."
+
+ if use aqua; then
+ sed -i -e \
+ "s:BUNDLE_INSTALL_DIR \"/Applications:BUNDLE_INSTALL_DIR \"${EPREFIX}/${APP_BUNDLE_DIR}:g" \
+ cmake/modules/FindKDE4Internal.cmake || die "failed to sed FindKDE4Internal.cmake"
+
+ #if [[ ${CHOST} == *-darwin8 ]]; then
+ sed -i -e \
+ "s:set(_add_executable_param MACOSX_BUNDLE):remove(_add_executable_param MACOSX_BUNDLE):g" \
+ cmake/modules/KDE4Macros.cmake || die "failed to sed KDE4Macros.cmake"
+ #fi
+
+ # solid/solid/backends/iokit doesn't properly link, so disable it.
+ sed -e "s|\(APPLE\)|(FALSE)|g" -i solid/solid/CMakeLists.txt \
+ || die "disabling solid/solid/backends/iokit failed"
+ sed -e "s|m_backend = .*Backends::IOKit.*;|m_backend = 0;|g" -i solid/solid/managerbase.cpp \
+ || die "disabling solid/solid/backends/iokit failed"
+
+ # There's no fdatasync on OSX and the check fails to detect that.
+ sed -e "/HAVE_FDATASYNC/ d" -i config.h.cmake \
+ || die "disabling fdatasync failed"
+
+ # Fix nameser include to nameser8_compat
+ sed -e "s|nameser8_compat.h|nameser_compat.h|g" -i kio/misc/kpac/discovery.cpp \
+ || die "fixing nameser include failed"
+ append-flags -DHAVE_ARPA_NAMESER8_COMPAT_H=1
+
+ # Try to fix kkeyserver_mac
+ epatch "${FILESDIR}"/${PN}-4.3.80-kdeui_util_kkeyserver_mac.patch
+ fi
+}
+
+src_configure() {
+ local mycmakeargs=(
+ -DWITH_HSPELL=OFF
+ -DWITH_ASPELL=OFF
+ -DWITH_DNSSD=OFF
+ -DKDE_DEFAULT_HOME=.kde4
+ -DKAUTH_BACKEND=POLKITQT-1
+ -DBUILD_libkactivities=OFF
+ $(cmake-utils_use_build handbook doc)
+ $(cmake-utils_use_has 3dnow X86_3DNOW)
+ $(cmake-utils_use_has altivec PPC_ALTIVEC)
+ $(cmake-utils_use_has mmx X86_MMX)
+ $(cmake-utils_use_has sse X86_SSE)
+ $(cmake-utils_use_has sse2 X86_SSE2)
+ $(cmake-utils_use_with acl)
+ $(cmake-utils_use_with alsa)
+ $(cmake-utils_use_with bzip2 BZip2)
+ $(cmake-utils_use_with crypt QCA2)
+ $(cmake-utils_use_with fam)
+ $(cmake-utils_use_with jpeg2k Jasper)
+ $(cmake-utils_use_with kerberos GSSAPI)
+ $(cmake-utils_use_with lzma LibLZMA)
+ $(cmake-utils_use_with nepomuk Soprano)
+ $(cmake-utils_use_with nepomuk SharedDesktopOntologies)
+ $(cmake-utils_use_with nls Libintl)
+ $(cmake-utils_use_with openexr OpenEXR)
+ $(cmake-utils_use_with opengl OpenGL)
+ $(cmake-utils_use_with policykit PolkitQt-1)
+ $(cmake-utils_use_with spell ENCHANT)
+ $(cmake-utils_use_with ssl OpenSSL)
+ $(cmake-utils_use_with udev UDev)
+ $(cmake-utils_use_with udisks SOLID_UDISKS2)
+ $(cmake-utils_use_with zeroconf Avahi)
+ )
+ kde4-base_src_configure
+}
+
+src_compile() {
+ kde4-base_src_compile
+
+ # The building of apidox is not managed anymore by the build system
+ if use doc; then
+ einfo "Building API documentation"
+ cd "${S}"/doc/api/
+ ./doxygen.sh "${S}" || die "APIDOX generation failed"
+ fi
+}
+
+src_install() {
+ kde4-base_src_install
+
+ # use system certificates
+ rm -f "${ED}"/usr/share/apps/kssl/ca-bundle.crt || die
+ dosym /etc/ssl/certs/ca-certificates.crt /usr/share/apps/kssl/ca-bundle.crt
+
+ if use doc; then
+ einfo "Installing API documentation. This could take a bit of time."
+ cd "${S}"/doc/api/
+ docinto /HTML/en/kdelibs-apidox
+ dohtml -r ${P}-apidocs/*
+ fi
+
+ if use aqua; then
+ einfo "fixing ${PN} plugins"
+
+ local _PV=${PV:0:3}.0
+ local _dir=${EPREFIX}/usr/$(get_libdir)/kde4/plugins/script
+
+ install_name_tool -id \
+ "${_dir}/libkrossqtsplugin.${_PV}.dylib" \
+ "${D}/${_dir}/libkrossqtsplugin.${_PV}.dylib" \
+ || die "failed fixing libkrossqtsplugin.${_PV}.dylib"
+
+ einfo "fixing ${PN} cmake detection files"
+ #sed -i -e \
+ # "s:if (HAVE_XKB):if (HAVE_XKB AND NOT APPLE):g" \
+ echo -e "set(XKB_FOUND FALSE)\nset(HAVE_XKB FALSE)" > \
+ "${ED}"/usr/share/apps/cmake/modules/FindXKB.cmake \
+ || die "failed fixing FindXKB.cmake"
+ fi
+
+ einfo Installing environment file.
+ # Since 44qt4 is sourced earlier QT_PLUGIN_PATH is defined.
+ echo "COLON_SEPARATED=QT_PLUGIN_PATH" > "${T}/77kde"
+ echo "QT_PLUGIN_PATH=${EPREFIX}/usr/$(get_libdir)/kde4/plugins" >> "${T}/77kde"
+ doenvd "${T}/77kde"
+}
+
+pkg_postinst() {
+ fdo-mime_mime_database_update
+
+ if use zeroconf; then
+ echo
+ elog "To make zeroconf support available in KDE make sure that the avahi daemon"
+ elog "is running."
+ echo
+ einfo "If you also want to use zeroconf for hostname resolution, emerge sys-auth/nss-mdns"
+ einfo "and enable multicast dns lookups by editing the 'hosts:' line in /etc/nsswitch.conf"
+ einfo "to include 'mdns', e.g.:"
+ einfo " hosts: files mdns dns"
+ echo
+ fi
+
+ kde4-base_pkg_postinst
+}
+
+pkg_prerm() {
+ # Remove ksycoca4 global database
+ rm -f "${EROOT}${PREFIX}"/share/kde4/services/ksycoca4
+}
+
+pkg_postrm() {
+ fdo-mime_mime_database_update
+
+ kde4-base_pkg_postrm
+}