Chromium Code Reviews| Index: Source/core/dom/Range.cpp | 
| diff --git a/Source/core/dom/Range.cpp b/Source/core/dom/Range.cpp | 
| index 241c62f3c20656a65b4b824ff15af8159d15036e..9e354ce4a3076bd58f48fecfcc6aa36d55eaa521 100644 | 
| --- a/Source/core/dom/Range.cpp | 
| +++ b/Source/core/dom/Range.cpp | 
| @@ -57,6 +57,10 @@ namespace WebCore { | 
| DEFINE_DEBUG_ONLY_GLOBAL(WTF::RefCountedLeakCounter, rangeCounter, ("Range")); | 
| +#if ENABLE(OILPAN) | 
| +unsigned TemporaryRangeScope::s_nesting = 0; | 
| +#endif | 
| + | 
| inline Range::Range(Document& ownerDocument) | 
| : m_ownerDocument(&ownerDocument) | 
| , m_start(m_ownerDocument) | 
| @@ -65,9 +69,9 @@ inline Range::Range(Document& ownerDocument) | 
| #ifndef NDEBUG | 
| rangeCounter.increment(); | 
| #endif | 
| - | 
| ScriptWrappable::init(this); | 
| - m_ownerDocument->attachRange(this); | 
| + if (!TemporaryRangeScope::active()) | 
| 
 
haraken
2014/06/24 12:24:22
You can move this check into Document::attachRange
 
 | 
| + m_ownerDocument->attachRange(this); | 
| } | 
| PassRefPtrWillBeRawPtr<Range> Range::create(Document& ownerDocument) | 
| @@ -83,9 +87,9 @@ inline Range::Range(Document& ownerDocument, Node* startContainer, int startOffs | 
| #ifndef NDEBUG | 
| rangeCounter.increment(); | 
| #endif | 
| - | 
| ScriptWrappable::init(this); | 
| - m_ownerDocument->attachRange(this); | 
| + if (!TemporaryRangeScope::active()) | 
| 
 
haraken
2014/06/24 12:24:22
Ditto.
 
 | 
| + m_ownerDocument->attachRange(this); | 
| // Simply setting the containers and offsets directly would not do any of the checking | 
| // that setStart and setEnd do, so we call those functions. |