Changeset 88652 in webkit


Ignore:
Timestamp:
Jun 13, 2011 10:59:28 AM (13 years ago)
Author:
commit-queue@webkit.org
Message:

2011-06-13 Tim Horton <timothy_horton@apple.com>

Reviewed by Simon Fraser.

REGRESSION(87152): Crash on page with svg fonts
https://bugs.webkit.org/show_bug.cgi?id=61556

We can't assume that the parent of a SVG-font-styled
text node won't be an anonymous block.

Test: svg/text/text-font-anonymous-parent.xhtml

  • rendering/svg/SVGTextRunRenderingContext.cpp: (WebCore::firstParentRendererForNonTextNode): (WebCore::SVGTextRunWalker::walk): (WebCore::floatWidthOfSubStringUsingSVGFont): (WebCore::SVGTextRunRenderingContext::drawTextUsingSVGFont):
Location:
trunk
Files:
2 added
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r88649 r88652  
     12011-06-13  Tim Horton  <timothy_horton@apple.com>
     2
     3        Reviewed by Simon Fraser.
     4
     5        REGRESSION(87152): Crash on page with svg fonts
     6        https://bugs.webkit.org/show_bug.cgi?id=61556
     7
     8        We can't assume that the parent of a SVG-font-styled
     9        text node won't be an anonymous block.
     10
     11        Test: svg/text/text-font-anonymous-parent.xhtml
     12
     13        * rendering/svg/SVGTextRunRenderingContext.cpp:
     14        (WebCore::firstParentRendererForNonTextNode):
     15        (WebCore::SVGTextRunWalker::walk):
     16        (WebCore::floatWidthOfSubStringUsingSVGFont):
     17        (WebCore::SVGTextRunRenderingContext::drawTextUsingSVGFont):
     18
    1192011-06-13  Tony Chang  <tony@chromium.org>
    220
  • trunk/Source/WebCore/rendering/svg/SVGTextRunRenderingContext.cpp

    r88557 r88652  
    7777    ASSERT(renderer);
    7878    RenderObject* newRenderer = renderer->isText() ? renderer->parent() : renderer;
    79     ASSERT(newRenderer->node());
    80     ASSERT(newRenderer->node()->isElementNode());
    8179    return newRenderer;
    8280}
     
    132130        SVGGlyph altGlyphIdentifier;
    133131        Node* node = parentRenderObject->node();
    134         if (node->hasTagName(SVGNames::altGlyphTag)) {
     132        if (node && node->hasTagName(SVGNames::altGlyphTag)) {
    135133            if (SVGGlyphElement* glyphElement = static_cast<SVGAltGlyphElement*>(node)->glyphElement()) {
    136134                haveAltGlyph = true;
     
    268266
    269267        RenderObject* renderObject = referencingRenderObjectFromRun(run);
    270         RenderObject* parentRenderObject = firstParentRendererForNonTextNode(renderObject);
    271 
    272         String language = toElement(parentRenderObject->node())->getAttribute(XMLNames::langAttr);
     268        RenderObject* parentRenderObject = firstParentRendererForNonTextNode(renderObject);
     269
     270        String language;
     271        if (SVGElement* element = static_cast<SVGElement*>(parentRenderObject->node()))
     272            language = element->getAttribute(XMLNames::langAttr);
     273
    273274        bool isVerticalText = isVerticalWritingMode(parentRenderObject->style()->svgStyle());
    274275
     
    349350        FloatPoint glyphOrigin;
    350351
    351         Node* node = parentRenderObject->node();
    352         String language = toElement(node)->getAttribute(XMLNames::langAttr);
     352        String language;
     353        if (SVGElement* element = static_cast<SVGElement*>(parentRenderObject->node()))
     354            language = element->getAttribute(XMLNames::langAttr);
    353355
    354356        RenderStyle* parentRenderObjectStyle = parentRenderObject->style();
Note: See TracChangeset for help on using the changeset viewer.