| Index: Source/core/dom/Range.cpp
|
| diff --git a/Source/core/dom/Range.cpp b/Source/core/dom/Range.cpp
|
| index 5598e873498bbb9af10443a844176d3debe20fe4..6de946606c42adc2bc94e5c73f56d0ed0d6d5b90 100644
|
| --- a/Source/core/dom/Range.cpp
|
| +++ b/Source/core/dom/Range.cpp
|
| @@ -1041,14 +1041,15 @@ void Range::insertNode(PassRefPtr<Node> prpNewNode, ExceptionState& es)
|
| if (collapsed)
|
| lastChild = (newNodeType == Node::DOCUMENT_FRAGMENT_NODE) ? newNode->lastChild() : newNode;
|
|
|
| - int startOffset = m_start.offset();
|
| container = m_start.container();
|
| - container->insertBefore(newNode.release(), container->childNode(startOffset), es);
|
| + container->insertBefore(newNode.release(), container->childNode(m_start.offset()), es);
|
| if (es.hadException())
|
| return;
|
|
|
| + // Note that m_start.offset() may have changed as a result of container->insertBefore,
|
| + // when the node we are inserting comes before the range in the same container.
|
| if (collapsed && numNewChildren)
|
| - m_end.set(m_start.container(), startOffset + numNewChildren, lastChild.get());
|
| + m_end.set(m_start.container(), m_start.offset() + numNewChildren, lastChild.get());
|
| }
|
| }
|
|
|
|
|