Rolling out change. Tree was closed.
authorkocienda <kocienda@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 9 Dec 2004 22:40:47 +0000 (22:40 +0000)
committerkocienda <kocienda@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 9 Dec 2004 22:40:47 +0000 (22:40 +0000)
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@8165 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog-2005-08-23
WebCore/khtml/editing/htmlediting.cpp

index d1c3d45e36757a9fe8bbedeb758d99c2e7d08bcc..7564d6403678a791450179a63059d8b5f4c77f70 100644 (file)
         been deleted. If this is the case, set the destination to the node the delete command provides in
         its ending selection.
 
+2004-12-09  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by NOBODY (OOPS!).
+
+        Fix for this bug:
+        
+        <rdar://problem/3910425> REGRESSION (Mail): Crash in ReplaceSelectionCommand; selection is empty, leading to null deref
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::MoveSelectionCommand::doApply): The node representing the destination for the move may have
+        been deleted. If this is the case, set the destination to the node the delete command provides in
+        its ending selection.
+
 2004-12-09  Ken Kocienda  <kocienda@apple.com>
 
         Reviewed by John
index 6d1c36191742671d24833655b5df1f08c9af0cb5..596ea0108bdd48941d350a2b48f20d45bd74e258 100644 (file)
@@ -2715,8 +2715,6 @@ void MoveSelectionCommand::doApply()
     Selection selection = endingSelection();
     ASSERT(selection.isRange());
 
-    Position pos = m_position;
-
     // Update the position otherwise it may become invalid after the selection is deleted.
     NodeImpl *positionNode = m_position.node();
     long positionOffset = m_position.offset();
@@ -2728,19 +2726,11 @@ void MoveSelectionCommand::doApply()
         if (selectionStart.node() == positionNode) {
             positionOffset += selectionStart.offset();
         }
-        pos = Position(positionNode, positionOffset);
     }
-
+    
     deleteSelection(m_smartMove);
 
-    // If the node for the destination has been removed as a result of the deletion,
-    // set the destination to the ending point after the deletion.
-    // Fixes: <rdar://problem/3910425> REGRESSION (Mail): Crash in ReplaceSelectionCommand; 
-    //        selection is empty, leading to null deref
-    if (!pos.node()->inDocument())
-        pos = endingSelection().start();
-
-    setEndingSelection(pos);
+    setEndingSelection(Position(positionNode, positionOffset));
     EditCommandPtr cmd(new ReplaceSelectionCommand(document(), m_fragment, true, m_smartMove));
     applyCommandToComposite(cmd);
 }