kensington    14/12/04 11:39:50

  Added:                kdelibs-4.14.3-trim-crash.patch
  Log:
  Backport patch from upstream solving a crash wrt bug #530646.
  
  (Portage version: 2.2.15/cvs/Linux x86_64, signed Manifest commit with key 
0x06B1F38DCA45A1EC!)

Revision  Changes    Path
1.1                  kde-base/kdelibs/files/kdelibs-4.14.3-trim-crash.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/kde-base/kdelibs/files/kdelibs-4.14.3-trim-crash.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/kde-base/kdelibs/files/kdelibs-4.14.3-trim-crash.patch?rev=1.1&content-type=text/plain

Index: kdelibs-4.14.3-trim-crash.patch
===================================================================
>From 570425a30c008297df09ef48b60486108fcf33e9 Mon Sep 17 00:00:00 2001
From: Andrea Iacovitti <[email protected]>
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





Reply via email to