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
