From c8c36dd227eec2454cfe3aaa74720cc5897864ac Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Fri, 20 Oct 2006 16:22:53 +0000 Subject: [PATCH] r9304@dhcp-18-188-67-85: nickm | 2006-10-20 12:22:46 -0400 Change HT_INIT from a special-case to a macro-calling-a-function like the rest of ht.h. This might prevent errors if somebody did, I dunno, "HT_INIT(tp, hashtable++)". Based on a patch from Watson Ladd. svn:r8776 --- src/common/container.c | 4 ++-- src/common/ht.h | 20 ++++++++++---------- src/or/dns.c | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/common/container.c b/src/common/container.c index 5facd72d65..6dae0bb932 100644 --- a/src/common/container.c +++ b/src/common/container.c @@ -675,7 +675,7 @@ strmap_new(void) { strmap_t *result; result = tor_malloc(sizeof(strmap_t)); - HT_INIT(&result->head); + HT_INIT(strmap_impl, &result->head); return result; } @@ -686,7 +686,7 @@ digestmap_new(void) { digestmap_t *result; result = tor_malloc(sizeof(digestmap_t)); - HT_INIT(&result->head); + HT_INIT(digestmap_impl, &result->head); return result; } diff --git a/src/common/ht.h b/src/common/ht.h index d51d7c5c00..11b61ed341 100644 --- a/src/common/ht.h +++ b/src/common/ht.h @@ -26,14 +26,6 @@ #define HT_INITIALIZER() \ { NULL, 0, 0, 0, -1 } -#define HT_INIT(root) do { \ - (root)->hth_table_length = 0; \ - (root)->hth_table = NULL; \ - (root)->hth_n_entries = 0; \ - (root)->hth_load_limit = 0; \ - (root)->hth_prime_idx = -1; \ - } while (0) - #define HT_ENTRY(type) \ struct { \ struct type *hte_next; \ @@ -59,7 +51,7 @@ #define HT_NEXT(name, head, elm) name##_HT_NEXT((head), (elm)) #define HT_NEXT_RMV(name, head, elm) name##_HT_NEXT_RMV((head), (elm)) #define HT_CLEAR(name, head) name##_HT_CLEAR(head) - +#define HT_INIT(name, head) name##_HT_INIT(head) /* Helper: */ static INLINE unsigned ht_improve_hash(unsigned h) @@ -100,6 +92,14 @@ ht_string_hash(const char *s) int name##_HT_GROW(struct name *ht, unsigned min_capacity); \ void name##_HT_CLEAR(struct name *ht); \ int _##name##_HT_REP_IS_BAD(struct name *ht); \ + static INLINE void \ + name##_HT_INIT(struct name *head) { \ + head->hth_table_length = 0; \ + head->hth_table = NULL; \ + head->hth_n_entries = 0; \ + head->hth_load_limit = 0; \ + head->hth_prime_idx = -1; \ + } \ /* Helper: returns a pointer to the right location in the table \ * 'head' to find or insert the element 'elm'. */ \ static INLINE struct type ** \ @@ -344,7 +344,7 @@ ht_string_hash(const char *s) if (head->hth_table) \ freefn(head->hth_table); \ head->hth_table_length = 0; \ - HT_INIT(head); \ + name##_HT_INIT(head); \ } \ /* Debugging helper: return false iff the representation of 'head' is \ * internally consistent. */ \ diff --git a/src/or/dns.c b/src/or/dns.c index 60dca8b692..4a9853959e 100644 --- a/src/or/dns.c +++ b/src/or/dns.c @@ -162,7 +162,7 @@ HT_GENERATE(cache_map, cached_resolve_t, node, cached_resolve_hash, static void init_cache_map(void) { - HT_INIT(&cache_root); + HT_INIT(cache_map, &cache_root); } #ifdef USE_EVENTDNS