update.
[chise/concord.git] / name.c
diff --git a/name.c b/name.c
index 41ca2ec..3f44b12 100644 (file)
--- a/name.c
+++ b/name.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003,2004,2005,2006 MORIOKA Tomohiko
+/* Copyright (C) 2003, 2004, 2005, 2006, 2013 MORIOKA Tomohiko
    This file is part of the CONCORD Library.
 
    The CONCORD Library is free software; you can redistribute it and/or
 #include <string.h>
 #include <stdlib.h>
 #include "concord-name.h"
-
-struct CONCORD_HASH_TABLE_ENTRY
-{
-  void *key;
-  void *value;
-};
-
-struct CONCORD_HASH_TABLE
-{
-  size_t size;
-  CONCORD_HASH_TABLE_ENTRY *data;
-};
-
-CONCORD_HASH_TABLE* concord_make_hash_table (size_t size);
-void concord_destroy_hash_table (CONCORD_HASH_TABLE* hash);
-int concord_hash_c_string (const unsigned char *ptr);
+#include "hash-i.h"
 
 CONCORD_HASH_TABLE*
 concord_make_hash_table (size_t size)
@@ -70,14 +55,14 @@ concord_destroy_hash_table (CONCORD_HASH_TABLE* table)
 
 
 /* derived from hashpjw, Dragon Book P436. */
-int
+unsigned long
 concord_hash_c_string (const unsigned char *ptr)
 {
-  int hash = 0;
+  unsigned long hash = 0;
 
   while (*ptr != '\0')
     {
-      int g;
+      unsigned long g;
       hash = (hash << 4) + *ptr++;
       g = hash & 0xf0000000;
       if (g)
@@ -194,6 +179,7 @@ concord_name_table_grow (CONCORD_NAME_TABLE* table)
            }
        }
     }
+  free (table->data);
   table->size = new_table->size;
   table->data = new_table->data;
   free (new_table);