<rdar://problem/10263562> Crash in WebCore::Range::startPosition() when dismissing...
authormitz@apple.com <mitz@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 17 Mar 2012 19:23:28 +0000 (19:23 +0000)
committermitz@apple.com <mitz@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 17 Mar 2012 19:23:28 +0000 (19:23 +0000)
https://bugs.webkit.org/show_bug.cgi?id=81454

Reviewed by Ada Chan.

When the Press and Hold panel is dismissed by clicking in the menu bar,
-insertText:replacementRange: is called with an NSRange whose location is NSNotFound - 1
(see <rdar://problem/11069374>). Trying to convert this bogus range to a WebCore Range
returns 0, which leads to the crash.

* WebProcess/WebPage/mac/WebPageMac.mm:
(WebKit::WebPage::insertText): Added a null check, to protect the code from bogus ranges.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@111125 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit2/ChangeLog
Source/WebKit2/WebProcess/WebPage/mac/WebPageMac.mm

index 5fd5c454e5cf4112a78db52a74817a8599c1c2d8..8bd1587ded4e47e1801ed35196fe02916791811b 100644 (file)
@@ -1,3 +1,18 @@
+2012-03-17  Dan Bernstein  <mitz@apple.com>
+
+        <rdar://problem/10263562> Crash in WebCore::Range::startPosition() when dismissing the Press and Hold panel by clicking in the menu bar
+        https://bugs.webkit.org/show_bug.cgi?id=81454
+
+        Reviewed by Ada Chan.
+
+        When the Press and Hold panel is dismissed by clicking in the menu bar,
+        -insertText:replacementRange: is called with an NSRange whose location is NSNotFound - 1
+        (see <rdar://problem/11069374>). Trying to convert this bogus range to a WebCore Range
+        returns 0, which leads to the crash.
+
+        * WebProcess/WebPage/mac/WebPageMac.mm:
+        (WebKit::WebPage::insertText): Added a null check, to protect the code from bogus ranges.
+
 2012-03-16  Stephanie Lewis  <slewis@apple.com>
 
         https://bugs.webkit.org/show_bug.cgi?id=81065
index ff1b8ac898d75c1a722a3cd14c9aad7c3ebd4ef7..de8af4590d7fbc58e1ef893f21020649047cfd30 100644 (file)
@@ -268,10 +268,10 @@ void WebPage::insertText(const String& text, uint64_t replacementRangeStart, uin
 {
     Frame* frame = m_page->focusController()->focusedOrMainFrame();
 
-    RefPtr<Range> replacementRange;
     if (replacementRangeStart != NSNotFound) {
-        replacementRange = convertToRange(frame, NSMakeRange(replacementRangeStart, replacementRangeEnd - replacementRangeStart));
-        frame->selection()->setSelection(VisibleSelection(replacementRange.get(), SEL_DEFAULT_AFFINITY));
+        RefPtr<Range> replacementRange = convertToRange(frame, NSMakeRange(replacementRangeStart, replacementRangeEnd - replacementRangeStart));
+        if (replacementRange)
+            frame->selection()->setSelection(VisibleSelection(replacementRange.get(), SEL_DEFAULT_AFFINITY));
     }
 
     if (!frame->editor()->hasComposition()) {