From 3522876d5291922ddc62bf1b70d02743b0850673 Mon Sep 17 00:00:00 2001 From: Bo Xu Date: Tue, 8 Jul 2014 15:30:46 -0700 Subject: Remove custom memory manager BUG= R=palmer@chromium.org Review URL: https://codereview.chromium.org/372473003 --- core/src/fxcrt/fx_xml_parser.cpp | 267 +++++++++------------------------------ 1 file changed, 61 insertions(+), 206 deletions(-) (limited to 'core/src/fxcrt/fx_xml_parser.cpp') diff --git a/core/src/fxcrt/fx_xml_parser.cpp b/core/src/fxcrt/fx_xml_parser.cpp index b7e58a04e1..d41880a6c4 100644 --- a/core/src/fxcrt/fx_xml_parser.cpp +++ b/core/src/fxcrt/fx_xml_parser.cpp @@ -1,24 +1,20 @@ // Copyright 2014 PDFium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. - + // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com #include "../../include/fxcrt/fx_xml.h" #include "xml_int.h" CXML_Parser::~CXML_Parser() { - if (m_bOwnedStream && m_pDataAcc) { + if (m_bOwnedStream) { m_pDataAcc->Release(); } } FX_BOOL CXML_Parser::Init(FX_LPBYTE pBuffer, size_t size) { - if (m_pAllocator) { - m_pDataAcc = FX_NewAtAllocator(m_pAllocator)CXML_DataBufAcc(pBuffer, size, m_pAllocator); - } else { - m_pDataAcc = FX_NEW CXML_DataBufAcc(pBuffer, size, NULL); - } + m_pDataAcc = FX_NEW CXML_DataBufAcc(pBuffer, size); if (!m_pDataAcc) { return FALSE; } @@ -26,11 +22,7 @@ FX_BOOL CXML_Parser::Init(FX_LPBYTE pBuffer, size_t size) } FX_BOOL CXML_Parser::Init(IFX_FileRead *pFileRead) { - if (m_pAllocator) { - m_pDataAcc = FX_NewAtAllocator(m_pAllocator)CXML_DataStmAcc(pFileRead, m_pAllocator); - } else { - m_pDataAcc = FX_NEW CXML_DataStmAcc(pFileRead, NULL); - } + m_pDataAcc = FX_NEW CXML_DataStmAcc(pFileRead); if (!m_pDataAcc) { return FALSE; } @@ -136,19 +128,19 @@ void CXML_Parser::SkipWhiteSpaces() } } while (ReadNextBlock()); } -void CXML_Parser::GetName(CFX_ByteStringL &space, CFX_ByteStringL &name) +void CXML_Parser::GetName(CFX_ByteString &space, CFX_ByteString &name) { m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; if (IsEOF()) { return; } - CFX_ByteTextBuf buf(m_pAllocator); + CFX_ByteTextBuf buf; FX_BYTE ch; do { while (m_dwIndex < m_dwBufferSize) { ch = m_pBuffer[m_dwIndex]; if (ch == ':') { - buf.GetByteStringL(space); + space = buf.GetByteString(); buf.Clear(); } else if (g_FXCRT_XML_IsNameChar(ch)) { buf.AppendChar(ch); @@ -162,7 +154,7 @@ void CXML_Parser::GetName(CFX_ByteStringL &space, CFX_ByteStringL &name) break; } } while (ReadNextBlock()); - buf.GetByteStringL(name); + name = buf.GetByteString(); } void CXML_Parser::SkipLiterals(FX_BSTR str) { @@ -204,7 +196,7 @@ FX_DWORD CXML_Parser::GetCharRef() } FX_BYTE ch; FX_INT32 iState = 0; - CFX_ByteTextBuf buf(m_pAllocator); + CFX_ByteTextBuf buf; FX_DWORD code = 0; do { while (m_dwIndex < m_dwBufferSize) { @@ -283,13 +275,13 @@ FX_DWORD CXML_Parser::GetCharRef() } while (ReadNextBlock()); return code; } -void CXML_Parser::GetAttrValue(CFX_WideStringL &value) +void CXML_Parser::GetAttrValue(CFX_WideString &value) { m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; if (IsEOF()) { return; } - CFX_UTF8Decoder decoder(m_pAllocator); + CFX_UTF8Decoder decoder; FX_BYTE mark = 0, ch; do { while (m_dwIndex < m_dwBufferSize) { @@ -310,7 +302,7 @@ void CXML_Parser::GetAttrValue(CFX_WideStringL &value) if (ch == '&') { decoder.AppendChar(GetCharRef()); if (IsEOF()) { - decoder.GetResult(value); + value = decoder.GetResult(); return; } } else { @@ -322,9 +314,9 @@ void CXML_Parser::GetAttrValue(CFX_WideStringL &value) break; } } while (ReadNextBlock()); - decoder.GetResult(value); + value = decoder.GetResult(); } -void CXML_Parser::GetTagName(CFX_ByteStringL &space, CFX_ByteStringL &name, FX_BOOL &bEndTag, FX_BOOL bStartTag) +void CXML_Parser::GetTagName(CFX_ByteString &space, CFX_ByteString &name, FX_BOOL &bEndTag, FX_BOOL bStartTag) { m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; if (IsEOF()) { @@ -379,30 +371,23 @@ CXML_Element* CXML_Parser::ParseElement(CXML_Element* pParent, FX_BOOL bStartTag if (IsEOF()) { return NULL; } - CFX_ByteStringL tag_name, tag_space; + CFX_ByteString tag_name, tag_space; FX_BOOL bEndTag; GetTagName(tag_space, tag_name, bEndTag, bStartTag); if (tag_name.IsEmpty() || bEndTag) { - tag_space.Empty(m_pAllocator); return NULL; } CXML_Element* pElement; - if (m_pAllocator) { - pElement = FX_NewAtAllocator(m_pAllocator)CXML_Element(m_pAllocator); - } else { - pElement = FX_NEW CXML_Element; - } + pElement = FX_NEW CXML_Element; if (pElement) { pElement->m_pParent = pParent; pElement->SetTag(tag_space, tag_name); } - tag_space.Empty(m_pAllocator); - tag_name.Empty(m_pAllocator); if (!pElement) { return NULL; } do { - CFX_ByteStringL attr_space, attr_name; + CFX_ByteString attr_space, attr_name; while (m_dwIndex < m_dwBufferSize) { SkipWhiteSpaces(); if (IsEOF()) { @@ -411,8 +396,6 @@ CXML_Element* CXML_Parser::ParseElement(CXML_Element* pParent, FX_BOOL bStartTag if (!g_FXCRT_XML_IsNameIntro(m_pBuffer[m_dwIndex])) { break; } - attr_space.Empty(m_pAllocator); - attr_name.Empty(m_pAllocator); GetName(attr_space, attr_name); SkipWhiteSpaces(); if (IsEOF()) { @@ -426,13 +409,10 @@ CXML_Element* CXML_Parser::ParseElement(CXML_Element* pParent, FX_BOOL bStartTag if (IsEOF()) { break; } - CFX_WideStringL attr_value; + CFX_WideString attr_value; GetAttrValue(attr_value); - pElement->m_AttrMap.SetAt(attr_space, attr_name, attr_value, m_pAllocator); - attr_value.Empty(m_pAllocator); + pElement->m_AttrMap.SetAt(attr_space, attr_name, attr_value); } - attr_space.Empty(m_pAllocator); - attr_name.Empty(m_pAllocator); m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; if (m_dwIndex < m_dwBufferSize || IsEOF()) { break; @@ -450,19 +430,15 @@ CXML_Element* CXML_Parser::ParseElement(CXML_Element* pParent, FX_BOOL bStartTag } if (ch != '>') { m_nOffset = m_nBufferOffset + (FX_FILESIZE)m_dwIndex; - if (m_pAllocator) { - FX_DeleteAtAllocator(pElement, m_pAllocator, CXML_Element); - } else { - delete pElement; - } + delete pElement; return NULL; } SkipWhiteSpaces(); if (IsEOF()) { return pElement; } - CFX_UTF8Decoder decoder(m_pAllocator); - CFX_WideTextBuf content(m_pAllocator); + CFX_UTF8Decoder decoder; + CFX_WideTextBuf content; FX_BOOL bCDATA = FALSE; FX_INT32 iState = 0; do { @@ -487,22 +463,18 @@ CXML_Element* CXML_Parser::ParseElement(CXML_Element* pParent, FX_BOOL bStartTag SkipWhiteSpaces(); iState = 0; } else if (ch == '/') { - CFX_ByteStringL space, name; + CFX_ByteString space, name; GetName(space, name); - space.Empty(m_pAllocator); - name.Empty(m_pAllocator); SkipWhiteSpaces(); m_dwIndex ++; iState = 10; } else { content << decoder.GetResult(); - CFX_WideStringL dataStr; - content.GetWideStringL(dataStr); + CFX_WideString dataStr = content.GetWideString(); if (!bCDATA && !m_bSaveSpaceChars) { dataStr.TrimRight((FX_LPCWSTR)L" \t\r\n"); } InsertContentSegment(bCDATA, dataStr, pElement); - dataStr.Empty(m_pAllocator); content.Clear(); decoder.Clear(); bCDATA = FALSE; @@ -542,13 +514,11 @@ CXML_Element* CXML_Parser::ParseElement(CXML_Element* pParent, FX_BOOL bStartTag } } while (ReadNextBlock()); content << decoder.GetResult(); - CFX_WideStringL dataStr; - content.GetWideStringL(dataStr); + CFX_WideString dataStr = content.GetWideString(); if (!m_bSaveSpaceChars) { dataStr.TrimRight((FX_LPCWSTR)L" \t\r\n"); } InsertContentSegment(bCDATA, dataStr, pElement); - dataStr.Empty(m_pAllocator); content.Clear(); decoder.Clear(); bCDATA = FALSE; @@ -560,15 +530,11 @@ void CXML_Parser::InsertContentSegment(FX_BOOL bCDATA, FX_WSTR content, CXML_Ele return; } CXML_Content* pContent; - if (m_pAllocator) { - pContent = FX_NewAtAllocator(m_pAllocator)CXML_Content; - } else { - pContent = FX_NEW CXML_Content; - } + pContent = FX_NEW CXML_Content; if (!pContent) { return; } - pContent->Set(bCDATA, content, m_pAllocator); + pContent->Set(bCDATA, content); pElement->m_Children.Add((FX_LPVOID)CXML_Element::Content); pElement->m_Children.Add(pContent); } @@ -581,54 +547,49 @@ static CXML_Element* XML_ContinueParse(CXML_Parser &parser, FX_BOOL bSaveSpaceCh } return pElement; } -CXML_Element* CXML_Element::Parse(const void* pBuffer, size_t size, FX_BOOL bSaveSpaceChars, FX_FILESIZE* pParsedSize, IFX_Allocator* pAllocator) +CXML_Element* CXML_Element::Parse(const void* pBuffer, size_t size, FX_BOOL bSaveSpaceChars, FX_FILESIZE* pParsedSize) { - CXML_Parser parser(pAllocator); + CXML_Parser parser; if (!parser.Init((FX_LPBYTE)pBuffer, size)) { return NULL; } return XML_ContinueParse(parser, bSaveSpaceChars, pParsedSize); } -CXML_Element* CXML_Element::Parse(IFX_FileRead *pFile, FX_BOOL bSaveSpaceChars, FX_FILESIZE* pParsedSize, IFX_Allocator* pAllocator) +CXML_Element* CXML_Element::Parse(IFX_FileRead *pFile, FX_BOOL bSaveSpaceChars, FX_FILESIZE* pParsedSize) { - CXML_Parser parser(pAllocator); + CXML_Parser parser; if (!parser.Init(pFile)) { return NULL; } return XML_ContinueParse(parser, bSaveSpaceChars, pParsedSize); } -CXML_Element* CXML_Element::Parse(IFX_BufferRead *pBuffer, FX_BOOL bSaveSpaceChars, FX_FILESIZE* pParsedSize, IFX_Allocator* pAllocator) +CXML_Element* CXML_Element::Parse(IFX_BufferRead *pBuffer, FX_BOOL bSaveSpaceChars, FX_FILESIZE* pParsedSize) { - CXML_Parser parser(pAllocator); + CXML_Parser parser; if (!parser.Init(pBuffer)) { return NULL; } return XML_ContinueParse(parser, bSaveSpaceChars, pParsedSize); } -CXML_Element::CXML_Element(IFX_Allocator* pAllocator) - : m_pParent(NULL) - , m_QSpaceName() +CXML_Element::CXML_Element() + : m_QSpaceName() , m_TagName() , m_AttrMap() - , m_Children(pAllocator) { } -CXML_Element::CXML_Element(FX_BSTR qSpace, FX_BSTR tagName, IFX_Allocator* pAllocator) - : m_pParent(NULL) - , m_QSpaceName() +CXML_Element::CXML_Element(FX_BSTR qSpace, FX_BSTR tagName) + : m_QSpaceName() , m_TagName() , m_AttrMap() - , m_Children(pAllocator) { - m_QSpaceName.Set(qSpace, pAllocator); - m_TagName.Set(tagName, pAllocator); + m_QSpaceName = qSpace; + m_TagName = tagName; } -CXML_Element::CXML_Element(FX_BSTR qTagName, IFX_Allocator* pAllocator) +CXML_Element::CXML_Element(FX_BSTR qTagName) : m_pParent(NULL) , m_QSpaceName() , m_TagName() , m_AttrMap() - , m_Children(pAllocator) { SetTag(qTagName); } @@ -638,32 +599,19 @@ CXML_Element::~CXML_Element() } void CXML_Element::Empty() { - IFX_Allocator* pAllocator = m_Children.m_pAllocator; - m_QSpaceName.Empty(pAllocator); - m_TagName.Empty(pAllocator); - m_AttrMap.RemoveAll(pAllocator); RemoveChildren(); } void CXML_Element::RemoveChildren() { - IFX_Allocator* pAllocator = m_Children.m_pAllocator; for (int i = 0; i < m_Children.GetSize(); i += 2) { ChildType type = (ChildType)(FX_UINTPTR)m_Children.GetAt(i); if (type == Content) { CXML_Content* content = (CXML_Content*)m_Children.GetAt(i + 1); - if (pAllocator) { - FX_DeleteAtAllocator(content, pAllocator, CXML_Content); - } else { - delete content; - } + delete content; } else if (type == Element) { CXML_Element* child = (CXML_Element*)m_Children.GetAt(i + 1); child->RemoveChildren(); - if (pAllocator) { - FX_DeleteAtAllocator(child, pAllocator, CXML_Element); - } else { - delete child; - } + delete child; } } m_Children.RemoveAll(); @@ -678,25 +626,6 @@ CFX_ByteString CXML_Element::GetTagName(FX_BOOL bQualified) const bsTag += m_TagName; return bsTag; } -void CXML_Element::GetTagName(CFX_ByteStringL &tagName, FX_BOOL bQualified) const -{ - IFX_Allocator* pAllocator = m_Children.m_pAllocator; - if (!bQualified || m_QSpaceName.IsEmpty()) { - tagName.Set(m_TagName, pAllocator); - return; - } - FX_LPSTR str = tagName.AllocBuffer(m_QSpaceName.GetLength() + m_TagName.GetLength() + 2, pAllocator); - if (!str) { - return; - } - FXSYS_memcpy32(str, m_QSpaceName.GetCStr(), m_QSpaceName.GetLength()); - str += m_QSpaceName.GetLength(); - *str = ':'; - str ++; - FXSYS_memcpy32(str, m_TagName.GetCStr(), m_TagName.GetLength()); - str += m_TagName.GetLength(); - *str = '\0'; -} CFX_ByteString CXML_Element::GetNamespace(FX_BOOL bQualified) const { if (bQualified) { @@ -704,18 +633,9 @@ CFX_ByteString CXML_Element::GetNamespace(FX_BOOL bQualified) const } return GetNamespaceURI(m_QSpaceName); } -void CXML_Element::GetNamespace(CFX_ByteStringL &nameSpace, FX_BOOL bQualified) const -{ - IFX_Allocator* pAllocator = m_Children.m_pAllocator; - if (bQualified) { - nameSpace.Set(m_QSpaceName, pAllocator); - return; - } - GetNamespaceURI(m_QSpaceName, nameSpace); -} CFX_ByteString CXML_Element::GetNamespaceURI(FX_BSTR qName) const { - const CFX_WideStringL* pwsSpace; + const CFX_WideString* pwsSpace; const CXML_Element *pElement = this; do { if (qName.IsEmpty()) { @@ -730,26 +650,6 @@ CFX_ByteString CXML_Element::GetNamespaceURI(FX_BSTR qName) const } while(pElement); return pwsSpace ? FX_UTF8Encode(*pwsSpace) : CFX_ByteString(); } -void CXML_Element::GetNamespaceURI(FX_BSTR qName, CFX_ByteStringL &uri) const -{ - IFX_Allocator* pAllocator = m_Children.m_pAllocator; - const CFX_WideStringL* pwsSpace; - const CXML_Element *pElement = this; - do { - if (qName.IsEmpty()) { - pwsSpace = pElement->m_AttrMap.Lookup(FX_BSTRC(""), FX_BSTRC("xmlns")); - } else { - pwsSpace = pElement->m_AttrMap.Lookup(FX_BSTRC("xmlns"), qName); - } - if (pwsSpace) { - break; - } - pElement = pElement->GetParent(); - } while(pElement); - if (pwsSpace) { - FX_UTF8Encode(pwsSpace->GetPtr(), pwsSpace->GetLength(), uri, pAllocator); - } -} void CXML_Element::GetAttrByIndex(int index, CFX_ByteString& space, CFX_ByteString& name, CFX_WideString& value) const { if (index < 0 || index >= m_AttrMap.GetSize()) { @@ -760,17 +660,6 @@ void CXML_Element::GetAttrByIndex(int index, CFX_ByteString& space, CFX_ByteStri name = item.m_AttrName; value = item.m_Value; } -void CXML_Element::GetAttrByIndex(int index, CFX_ByteStringL &space, CFX_ByteStringL &name, CFX_WideStringL &value) const -{ - if (index < 0 || index >= m_AttrMap.GetSize()) { - return; - } - IFX_Allocator* pAllocator = m_Children.m_pAllocator; - CXML_AttrItem& item = m_AttrMap.GetAt(index); - space.Set(item.m_QSpaceName, pAllocator); - name.Set(item.m_AttrName, pAllocator); - value.Set(item.m_Value, pAllocator); -} FX_BOOL CXML_Element::HasAttr(FX_BSTR name) const { CFX_ByteStringC bsSpace, bsName; @@ -781,37 +670,27 @@ FX_BOOL CXML_Element::GetAttrValue(FX_BSTR name, CFX_WideString& attribute) cons { CFX_ByteStringC bsSpace, bsName; FX_XML_SplitQualifiedName(name, bsSpace, bsName); - const CFX_WideStringL* pValue = m_AttrMap.Lookup(bsSpace, bsName); + const CFX_WideString* pValue = m_AttrMap.Lookup(bsSpace, bsName); if (pValue) { - attribute = CFX_WideString(pValue->GetPtr(), pValue->GetLength()); + attribute = CFX_WideString((FX_LPCWSTR)pValue, pValue->GetLength()); return TRUE; } return FALSE; } -const CFX_WideStringL* CXML_Element::GetAttrValuePtr(FX_BSTR name) const -{ - CFX_ByteStringC bsSpace, bsName; - FX_XML_SplitQualifiedName(name, bsSpace, bsName); - return m_AttrMap.Lookup(bsSpace, bsName); -} FX_BOOL CXML_Element::GetAttrValue(FX_BSTR space, FX_BSTR name, CFX_WideString& attribute) const { - const CFX_WideStringL* pValue = m_AttrMap.Lookup(space, name); + const CFX_WideString* pValue = m_AttrMap.Lookup(space, name); if (pValue) { - attribute = CFX_WideString(pValue->GetPtr(), pValue->GetLength()); + attribute = CFX_WideString((FX_LPCWSTR)pValue, pValue->GetLength()); return TRUE; } return FALSE; } -const CFX_WideStringL* CXML_Element::GetAttrValuePtr(FX_BSTR space, FX_BSTR name) const -{ - return m_AttrMap.Lookup(space, name); -} FX_BOOL CXML_Element::GetAttrInteger(FX_BSTR name, int& attribute) const { CFX_ByteStringC bsSpace, bsName; FX_XML_SplitQualifiedName(name, bsSpace, bsName); - const CFX_WideStringL* pwsValue = m_AttrMap.Lookup(bsSpace, bsName); + const CFX_WideString* pwsValue = m_AttrMap.Lookup(bsSpace, bsName); if (pwsValue) { attribute = pwsValue->GetInteger(); return TRUE; @@ -820,7 +699,7 @@ FX_BOOL CXML_Element::GetAttrInteger(FX_BSTR name, int& attribute) const } FX_BOOL CXML_Element::GetAttrInteger(FX_BSTR space, FX_BSTR name, int& attribute) const { - const CFX_WideStringL* pwsValue = m_AttrMap.Lookup(space, name); + const CFX_WideString* pwsValue = m_AttrMap.Lookup(space, name); if (pwsValue) { attribute = pwsValue->GetInteger(); return TRUE; @@ -835,8 +714,7 @@ FX_BOOL CXML_Element::GetAttrFloat(FX_BSTR name, FX_FLOAT& attribute) const } FX_BOOL CXML_Element::GetAttrFloat(FX_BSTR space, FX_BSTR name, FX_FLOAT& attribute) const { - CFX_WideString value; - const CFX_WideStringL* pValue = m_AttrMap.Lookup(space, name); + const CFX_WideString* pValue = m_AttrMap.Lookup(space, name); if (pValue) { attribute = pValue->GetFloat(); return TRUE; @@ -868,19 +746,6 @@ CFX_WideString CXML_Element::GetContent(FX_DWORD index) const } return CFX_WideString(); } -const CFX_WideStringL* CXML_Element::GetContentPtr(FX_DWORD index) const -{ - index <<= 1; - if (index >= (FX_DWORD)m_Children.GetSize() || - (ChildType)(FX_UINTPTR)m_Children.GetAt(index) != Content) { - return NULL; - } - CXML_Content* pContent = (CXML_Content*)m_Children.GetAt(index + 1); - if (pContent) { - return &pContent->m_Content; - } - return NULL; -} CXML_Element* CXML_Element::GetElement(FX_DWORD index) const { index <<= 1; @@ -935,7 +800,7 @@ FX_DWORD CXML_Element::FindElement(CXML_Element *pChild) const } return (FX_DWORD) - 1; } -const CFX_WideStringL* CXML_AttrMap::Lookup(FX_BSTR space, FX_BSTR name) const +const CFX_WideString* CXML_AttrMap::Lookup(FX_BSTR space, FX_BSTR name) const { if (m_pMap == NULL) { return NULL; @@ -948,21 +813,17 @@ const CFX_WideStringL* CXML_AttrMap::Lookup(FX_BSTR space, FX_BSTR name) const } return NULL; } -void CXML_AttrMap::SetAt(FX_BSTR space, FX_BSTR name, FX_WSTR value, IFX_Allocator* pAllocator) +void CXML_AttrMap::SetAt(FX_BSTR space, FX_BSTR name, FX_WSTR value) { - for (int i = 0; i < GetSize(); i ++) { + for (int i = 0; i < GetSize(); i++) { CXML_AttrItem& item = GetAt(i); if ((space.IsEmpty() || item.m_QSpaceName == space) && item.m_AttrName == name) { - item.m_Value.Set(value, pAllocator); + item.m_Value = value; return; } } if (!m_pMap) { - if (pAllocator) { - m_pMap = FX_NewAtAllocator(pAllocator)CFX_ObjectArray(pAllocator); - } else { - m_pMap = FX_NEW CFX_ObjectArray; - } + m_pMap = FX_NEW CFX_ObjectArray < CXML_AttrItem > ; } if (!m_pMap) { return; @@ -971,11 +832,11 @@ void CXML_AttrMap::SetAt(FX_BSTR space, FX_BSTR name, FX_WSTR value, IFX_Allocat if (!pItem) { return; } - pItem->m_QSpaceName.Set(space, pAllocator); - pItem->m_AttrName.Set(name, pAllocator); - pItem->m_Value.Set(value, pAllocator); + pItem->m_QSpaceName = space; + pItem->m_AttrName = name; + pItem->m_Value = value; } -void CXML_AttrMap::RemoveAt(FX_BSTR space, FX_BSTR name, IFX_Allocator* pAllocator) +void CXML_AttrMap::RemoveAt(FX_BSTR space, FX_BSTR name) { if (m_pMap == NULL) { return; @@ -983,7 +844,6 @@ void CXML_AttrMap::RemoveAt(FX_BSTR space, FX_BSTR name, IFX_Allocator* pAllocat for (int i = 0; i < m_pMap->GetSize(); i ++) { CXML_AttrItem& item = GetAt(i); if ((space.IsEmpty() || item.m_QSpaceName == space) && item.m_AttrName == name) { - item.Empty(pAllocator); m_pMap->RemoveAt(i); return; } @@ -998,20 +858,15 @@ CXML_AttrItem& CXML_AttrMap::GetAt(int index) const ASSERT(m_pMap != NULL); return (*m_pMap)[index]; } -void CXML_AttrMap::RemoveAll(IFX_Allocator* pAllocator) +void CXML_AttrMap::RemoveAll() { if (!m_pMap) { return; } for (int i = 0; i < m_pMap->GetSize(); i ++) { CXML_AttrItem& item = (*m_pMap)[i]; - item.Empty(pAllocator); } m_pMap->RemoveAll(); - if (pAllocator) { - FX_DeleteAtAllocator(m_pMap, pAllocator, CFX_ObjectArray); - } else { - delete m_pMap; - } + delete m_pMap; m_pMap = NULL; } -- cgit v1.2.3