| Index: Source/core/xml/parser/XMLDocumentParser.cpp
|
| diff --git a/Source/core/xml/parser/XMLDocumentParser.cpp b/Source/core/xml/parser/XMLDocumentParser.cpp
|
| index ae1e842653f51c0db4abb49515660fa3971bb791..879afb0c5ce2761565c0e42e4b1f5393c00f1802 100644
|
| --- a/Source/core/xml/parser/XMLDocumentParser.cpp
|
| +++ b/Source/core/xml/parser/XMLDocumentParser.cpp
|
| @@ -299,8 +299,10 @@ void XMLDocumentParser::pushCurrentNode(ContainerNode* n)
|
| {
|
| ASSERT(n);
|
| ASSERT(m_currentNode);
|
| +#if !ENABLE(OILPAN)
|
| if (n != document())
|
| n->ref();
|
| +#endif
|
| m_currentNodeStack.append(m_currentNode);
|
| m_currentNode = n;
|
| if (m_currentNodeStack.size() > maxXMLTreeDepth)
|
| @@ -312,26 +314,30 @@ void XMLDocumentParser::popCurrentNode()
|
| if (!m_currentNode)
|
| return;
|
| ASSERT(m_currentNodeStack.size());
|
| -
|
| +#if !ENABLE(OILPAN)
|
| if (m_currentNode != document())
|
| m_currentNode->deref();
|
| -
|
| +#endif
|
| m_currentNode = m_currentNodeStack.last();
|
| m_currentNodeStack.removeLast();
|
| }
|
|
|
| void XMLDocumentParser::clearCurrentNodeStack()
|
| {
|
| +#if !ENABLE(OILPAN)
|
| if (m_currentNode && m_currentNode != document())
|
| m_currentNode->deref();
|
| +#endif
|
| m_currentNode = nullptr;
|
| m_leafTextNode = nullptr;
|
|
|
| if (m_currentNodeStack.size()) { // Aborted parsing.
|
| +#if !ENABLE(OILPAN)
|
| for (size_t i = m_currentNodeStack.size() - 1; i != 0; --i)
|
| m_currentNodeStack[i]->deref();
|
| if (m_currentNodeStack[0] && m_currentNodeStack[0] != document())
|
| m_currentNodeStack[0]->deref();
|
| +#endif
|
| m_currentNodeStack.clear();
|
| }
|
| }
|
| @@ -782,10 +788,12 @@ XMLDocumentParser::XMLDocumentParser(DocumentFragment* fragment, Element* parent
|
| , m_scriptStartPosition(TextPosition::belowRangePosition())
|
| , m_parsingFragment(true)
|
| {
|
| +#if !ENABLE(OILPAN)
|
| fragment->ref();
|
| +#endif
|
|
|
| // Add namespaces based on the parent node
|
| - Vector<Element*> elemStack;
|
| + WillBeHeapVector<RawPtrWillBeMember<Element> > elemStack;
|
| while (parentElement) {
|
| elemStack.append(parentElement);
|
|
|
|
|