From: Francesco Pretto <cez...@gmail.com>
--- src/base/PdfDictionary.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-)
diff --git a/src/base/PdfDictionary.cpp b/src/base/PdfDictionary.cpp index bf2623c..df67c92 100644 --- a/src/base/PdfDictionary.cpp +++ b/src/base/PdfDictionary.cpp @@ -139,14 +139,14 @@ void PdfDictionary::AddKey( const PdfName & identifier, const PdfObject & rObjec PODOFO_RAISE_ERROR( ePdfError_InvalidDataType ); } */ - - if( m_mapKeys.find( identifier ) != m_mapKeys.end() ) + PdfObject *objToInsert = new PdfObject(rObject); + std::pair<TKeyMap::iterator, bool> inserted = m_mapKeys.insert( std::make_pair( identifier, objToInsert ) ); + if ( !inserted.second ) { - delete m_mapKeys[identifier]; - m_mapKeys.erase( identifier ); + delete inserted.first->second; + inserted.first->second = objToInsert; } - m_mapKeys[identifier] = new PdfObject( rObject ); m_bDirty = true; } @@ -246,12 +246,11 @@ bool PdfDictionary::HasKey( const PdfName & key ) const bool PdfDictionary::RemoveKey( const PdfName & identifier ) { - if( HasKey( identifier ) ) + TKeyMap::iterator found = m_mapKeys.find( identifier ); + if( found != m_mapKeys.end() ) { AssertMutable(); - delete m_mapKeys[identifier]; - - m_mapKeys.erase( identifier ); + m_mapKeys.erase( found ); m_bDirty = true; return true; }
_______________________________________________ Podofo-users mailing list Podofo-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/podofo-users