From ff2dca420b7e63266f85a8fb9cdc0d6294b62a11 Mon Sep 17 00:00:00 2001
From: cuz <cuz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Date: Wed, 22 Oct 2003 19:13:02 +0000
Subject: [PATCH] More tweaking of the new hashtab module

git-svn-id: svn://svn.cc65.org/cc65/trunk@2560 b7a2c559-68d2-44c3-8de9-860c34a00d81
---
 src/common/hashtab.c | 9 ++++++---
 src/common/hashtab.h | 8 ++++----
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/common/hashtab.c b/src/common/hashtab.c
index 72319a6a2..3572086ed 100644
--- a/src/common/hashtab.c
+++ b/src/common/hashtab.c
@@ -96,7 +96,7 @@ HashNode* HT_Find (const HashTable* T, const void* Key)
          * if it is not really necessary.
          */
         if (N->Hash == Hash &&
-            T->Func->Compare (Key, T->Func->GetIndex (N->Entry))) {
+            T->Func->Compare (Key, T->Func->GetKey (N->Entry))) {
             /* Found */
             break;
         }
@@ -133,8 +133,8 @@ void HT_Insert (HashTable* T, HashNode* N)
         HT_Alloc (T);
     }
 
-    /* Generate the hash for the node contents */
-    N->Hash = T->Func->GenHash (T->Func->GetIndex (N->Entry));
+    /* Generate the hash over the node key. */
+    N->Hash = T->Func->GenHash (T->Func->GetKey (N->Entry));
 
     /* Calculate the reduced hash */
     RHash = N->Hash % T->Slots;
@@ -143,6 +143,9 @@ void HT_Insert (HashTable* T, HashNode* N)
     N->Next = T->Table[RHash];
     T->Table[RHash] = N;
 
+    /* Set the owner */
+    N->Owner = T;
+
     /* One more entry */
     ++T->Count;
 }
diff --git a/src/common/hashtab.h b/src/common/hashtab.h
index 24e492716..b50acee42 100644
--- a/src/common/hashtab.h
+++ b/src/common/hashtab.h
@@ -59,7 +59,7 @@ struct HashNode {
     void*               Entry;          /* Pointer to user entry data */
 };
 
-#define STATIC_HASHNODE_INITIALIZER(Entry)      { 0, 0, 0, Entry }
+#define STATIC_HASHNODE_INITIALIZER(Entry) { 0, 0, 0, Entry }
 
 /* Hash table functions */
 typedef struct HashFunctions HashFunctions;
@@ -68,8 +68,8 @@ struct HashFunctions {
     unsigned (*GenHash) (const void* Key);
     /* Generate the hash over a key. */
 
-    const void* (*GetIndex) (void* Entry);
-    /* Given a pointer to the user entry data, return a pointer to the index */
+    const void* (*GetKey) (void* Entry);
+    /* Given a pointer to the user entry data, return a pointer to the key */
 
     HashNode* (*GetHashNode) (void* Entry);
     /* Given a pointer to the user entry data, return a pointer to the hash node */
@@ -99,7 +99,7 @@ struct HashTable {
 
 #if defined(HAVE_INLINE)
 INLINE void InitHashNode (HashNode* N, void* Entry)
-/* Initialize a hash node */
+/* Initialize a hash node. */
 {
     N->Next     = 0;
     N->Owner    = 0;