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

Reply via email to