From 16989217f3756d535b9a0fbab732e4f92d21ab97 Mon Sep 17 00:00:00 2001 From: "cfleizach@apple.com" Date: Fri, 23 Jan 2009 23:03:21 +0000 Subject: [PATCH] 2009-01-23 Chris Fleizach Reviewed by Beth Dakin. Bug 23509: Crash at -[WebCoreAXObject doAXNextSentenceEndTextMarkerForTextMarker:] https://bugs.webkit.org/show_bug.cgi?id=23509 Add null checking around next/previous sentence retrieval in AX code * page/AccessibilityObject.cpp: (WebCore::AccessibilityObject::nextSentenceEndPosition): (WebCore::AccessibilityObject::previousSentenceStartPosition): git-svn-id: http://svn.webkit.org/repository/webkit/trunk@40191 268f45cc-cd09-0410-ab3c-d52691b4dbfc --- WebCore/ChangeLog | 13 +++++++++++++ WebCore/page/AccessibilityObject.cpp | 16 ++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog index ba5bc9eb3d4..5687faedab2 100644 --- a/WebCore/ChangeLog +++ b/WebCore/ChangeLog @@ -1,3 +1,16 @@ +2009-01-23 Chris Fleizach + + Reviewed by Beth Dakin. + + Bug 23509: Crash at -[WebCoreAXObject doAXNextSentenceEndTextMarkerForTextMarker:] + https://bugs.webkit.org/show_bug.cgi?id=23509 + + Add null checking around next/previous sentence retrieval in AX code + + * page/AccessibilityObject.cpp: + (WebCore::AccessibilityObject::nextSentenceEndPosition): + (WebCore::AccessibilityObject::previousSentenceStartPosition): + 2009-01-23 David Hyatt Fix for REGRESSION: hover feedback not showing on many sites diff --git a/WebCore/page/AccessibilityObject.cpp b/WebCore/page/AccessibilityObject.cpp index e868da28c84..67b95fde149 100644 --- a/WebCore/page/AccessibilityObject.cpp +++ b/WebCore/page/AccessibilityObject.cpp @@ -739,7 +739,13 @@ VisiblePosition AccessibilityObject::nextSentenceEndPosition(const VisiblePositi // an empty line is considered a sentence. If it's skipped, then the sentence parser will not // see this empty line. Instead, return the end position of the empty line. VisiblePosition endPosition; - String lineString = plainText(makeRange(startOfLine(visiblePos), endOfLine(visiblePos)).get()); + VisiblePosition startOfLinePosition = startOfLine(nextVisiblePos); + VisiblePosition endOfLinePosition = endOfLine(nextVisiblePos); + + String lineString; + if (startOfLinePosition.isNotNull() && endOfLinePosition.isNotNull()) + lineString = plainText(makeRange(startOfLinePosition, endOfLinePosition).get()); + if (lineString.isEmpty()) endPosition = nextVisiblePos; else @@ -762,7 +768,13 @@ VisiblePosition AccessibilityObject::previousSentenceStartPosition(const Visible // treat empty line as a separate sentence. VisiblePosition startPosition; - String lineString = plainText(makeRange(startOfLine(previousVisiblePos), endOfLine(previousVisiblePos)).get()); + VisiblePosition startOfLinePosition = startOfLine(previousVisiblePos); + VisiblePosition endOfLinePosition = endOfLine(previousVisiblePos); + + String lineString; + if (startOfLinePosition.isNotNull() && endOfLinePosition.isNotNull()) + lineString = plainText(makeRange(startOfLinePosition, endOfLinePosition).get()); + if (lineString.isEmpty()) startPosition = previousVisiblePos; else -- GitLab