webengine/osswebengine/WebCore/loader/icon/IconDatabase.cpp
changeset 5 10e98eab6f85
parent 0 dd21522fd290
child 10 a359256acfc6
--- a/webengine/osswebengine/WebCore/loader/icon/IconDatabase.cpp	Fri May 08 08:25:06 2009 +0300
+++ b/webengine/osswebengine/WebCore/loader/icon/IconDatabase.cpp	Fri Jul 03 15:54:40 2009 +0100
@@ -40,6 +40,7 @@
 #include "SQLStatement.h"
 #include "SQLTransaction.h"
 #include "SystemTime.h"
+#include "WebKitUtilsSqlite.h"
 
 #if PLATFORM(WIN_OS)
 #include <windows.h>
@@ -230,6 +231,31 @@
     for (; i != end; ++i)
         delete (*i).second;
     m_iconURLToRecordMap.clear();
+    
+    HashMap<String, PageURLRecord*>::iterator recordIter = m_pageURLToRecordMap.begin();
+    HashMap<String, PageURLRecord*>::iterator recordEnd = m_pageURLToRecordMap.end();
+    String recordString;
+    for (; recordIter != recordEnd; ++recordIter) {
+        recordString = (*recordIter).first;
+        recordString = String();
+    }
+    m_pageURLToRecordMap.clear();
+    
+    HashSet<String>::iterator retainedIter = m_retainedPageURLs.begin();
+    HashSet<String>::iterator retainedEnd = m_retainedPageURLs.end();
+    String* retainedString;
+    for (; retainedIter != retainedEnd; ++retainedIter) {
+        retainedString = retainedIter.get();
+        *retainedString = String();
+    }
+    m_retainedPageURLs.clear();
+    
+    delete m_client;
+    delete sharedIconDatabase;
+    m_syncLock.~Mutex();
+    m_urlAndIconLock.~Mutex();
+    m_pendingSyncLock.~Mutex();
+    m_pendingReadingLock.~Mutex();
 #endif
 }
 
@@ -989,7 +1015,9 @@
     ASSERT_ICON_SYNC_THREAD();
     
     LOG(IconDatabase, "(THREAD) IconDatabase sync thread started");
-
+    // Create the Symbian SQL TLS
+    sqlite3SymbianLibInit();
+        
 #ifndef NDEBUG
     double startTime = currentTime();
 #endif
@@ -1784,6 +1812,10 @@
 #endif
     
     m_syncThreadRunning = false;
+    // Cleanup SQL TLS that was created from sqlite3SymbianLibInit() in iconDatabaseSyncThread()
+    sqlite3SymbianLibFinalize();
+    // Cleanup STDLIB TLS
+    CloseSTDLIB();
     return 0;
 }