From: Carlos Garcia Campos Date: Fri, 6 Mar 2015 07:33:11 +0000 (+0000) Subject: Recursive crash at WebCore::accessibleNameForNode X-Git-Tag: archive/raspbian/2.14.3-1+rpi1~1^2^2^2~3 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=718a9699074930d3f2c7c0ebb62497c54d9d92ee;p=webkit2gtk.git Recursive crash at WebCore::accessibleNameForNode =================================================================== Gbp-Pq: Name fix-ax-crash.patch --- diff --git a/Source/WebCore/accessibility/AccessibilityNodeObject.cpp b/Source/WebCore/accessibility/AccessibilityNodeObject.cpp index c811dd4f15..1ca1a8d03b 100644 --- a/Source/WebCore/accessibility/AccessibilityNodeObject.cpp +++ b/Source/WebCore/accessibility/AccessibilityNodeObject.cpp @@ -86,7 +86,7 @@ namespace WebCore { using namespace HTMLNames; -static String accessibleNameForNode(Node*); +static String accessibleNameForNode(Node* node, Node* labelledbyNode = nullptr); AccessibilityNodeObject::AccessibilityNodeObject(Node* node) : AccessibilityObject() @@ -1664,6 +1664,8 @@ String AccessibilityNodeObject::textUnderElement(AccessibilityTextUnderElementMo StringBuilder builder; for (AccessibilityObject* child = firstChild(); child; child = child->nextSibling()) { + if (mode.ignoredChildNode && child->node() == mode.ignoredChildNode) + continue; bool shouldDeriveNameFromAuthor = (mode.childrenInclusion == AccessibilityTextUnderElementMode::TextUnderElementModeIncludeNameFromContentsChildren && !child->accessibleNameDerivesFromContent()); if (shouldDeriveNameFromAuthor) { @@ -1840,7 +1842,7 @@ void AccessibilityNodeObject::colorValue(int& r, int& g, int& b) const // This function implements the ARIA accessible name as described by the Mozilla // ARIA Implementer's Guide. -static String accessibleNameForNode(Node* node) +static String accessibleNameForNode(Node* node, Node* labelledbyNode) { ASSERT(node); if (!node || !node->isElementNode()) @@ -1870,7 +1872,7 @@ static String accessibleNameForNode(Node* node) String text; if (axObject) { if (axObject->accessibleNameDerivesFromContent()) - text = axObject->textUnderElement(AccessibilityTextUnderElementMode(AccessibilityTextUnderElementMode::TextUnderElementModeIncludeNameFromContentsChildren, true)); + text = axObject->textUnderElement(AccessibilityTextUnderElementMode(AccessibilityTextUnderElementMode::TextUnderElementModeIncludeNameFromContentsChildren, true, labelledbyNode)); } else text = element->innerText(); @@ -1889,7 +1891,7 @@ String AccessibilityNodeObject::accessibilityDescriptionForElements(Vector