changeset 17587:f5f7cc201d94 draft

(svn r22351) -Revert (r17101): and reinstall r16546. Hash tables are much smaller now, so it shouldn't cause crash anymore
author smatz <smatz@openttd.org>
date Tue, 19 Apr 2011 18:20:34 +0000
parents f26b83125227
children 30a6043a3c66
files src/misc/hashtable.hpp
diffstat 1 files changed, 4 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/src/misc/hashtable.hpp
+++ b/src/misc/hashtable.hpp
@@ -145,20 +145,15 @@
 	 */
 	typedef CHashTableSlotT<Titem_> Slot;
 
-	Slot *m_slots;     // here we store our data (array of blobs)
-	int   m_num_items; // item counter
+	Slot  m_slots[Tcapacity]; // here we store our data (array of blobs)
+	int   m_num_items;        // item counter
 
 public:
 	/* default constructor */
-	FORCEINLINE CHashTableT()
+	FORCEINLINE CHashTableT() : m_num_items(0)
 	{
-		/* construct all slots */
-		m_slots = new Slot[Tcapacity];
-		m_num_items = 0;
 	}
 
-	~CHashTableT() {delete [] m_slots; m_num_items = 0; m_slots = NULL;}
-
 protected:
 	/** static helper - return hash for the given key modulo number of slots */
 	FORCEINLINE static int CalcHash(const Tkey& key)
@@ -180,7 +175,7 @@
 	FORCEINLINE int Count() const {return m_num_items;}
 
 	/** simple clear - forget all items - used by CSegmentCostCacheT.Flush() */
-	FORCEINLINE void Clear() const {for (int i = 0; i < Tcapacity; i++) m_slots[i].Clear();}
+	FORCEINLINE void Clear() {for (int i = 0; i < Tcapacity; i++) m_slots[i].Clear();}
 
 	/** const item search */
 	const Titem_ *Find(const Tkey& key) const