From 5e4d267b5e530e25a36274282dc43bfdf7aa0076 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 8 Nov 2005 19:04:01 +0000 Subject: [PATCH] The FontStyles are already deleted when deconstructing the family list - the styles hash table shouldn't try to delete them again. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14780 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/private/servers/app/HashTable.h | 2 +- src/servers/app/FontManager.cpp | 4 ++++ src/servers/app/HashTable.cpp | 8 ++++++-- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/headers/private/servers/app/HashTable.h b/headers/private/servers/app/HashTable.h index 7207947766..5913d3560d 100644 --- a/headers/private/servers/app/HashTable.h +++ b/headers/private/servers/app/HashTable.h @@ -23,7 +23,7 @@ class HashTable { HashTable(int32 capacity = 100, float loadFactor = 0.75); ~HashTable(); - void MakeEmpty(); + void MakeEmpty(bool deleteValues = true); bool IsEmpty() const { return fCount == 0; } bool ContainsKey(Hashable& key) const { return _GetHashEntry(key) != NULL; } int32 CountItems() const { return fCount; } diff --git a/src/servers/app/FontManager.cpp b/src/servers/app/FontManager.cpp index ccb0a38986..24da00d604 100644 --- a/src/servers/app/FontManager.cpp +++ b/src/servers/app/FontManager.cpp @@ -88,6 +88,10 @@ FontManager::~FontManager() { FTC_Manager_Done(ftmanager); FT_Done_FreeType(gFreeTypeLibrary); + + // we need to make sure the hash table doesn't delete the font styles; + // that's already done by the lists + fStyleHashTable.MakeEmpty(false); } diff --git a/src/servers/app/HashTable.cpp b/src/servers/app/HashTable.cpp index 5da0946156..19a954d9d2 100644 --- a/src/servers/app/HashTable.cpp +++ b/src/servers/app/HashTable.cpp @@ -45,15 +45,19 @@ HashTable::~HashTable() void -HashTable::MakeEmpty() +HashTable::MakeEmpty(bool deleteValues) { + if (fTable == NULL) + return; + for (int32 index = fCapacity; --index >= 0;) { struct entry *entry, *next; for (entry = fTable[index]; entry != NULL; entry = next) { next = entry->next; - delete entry->value; + if (deleteValues) + delete entry->value; delete entry; } }