--- glibc-2.3.2-net/iconv/iconvconfig.c 12 Jun 2003 09:48:20 -0000 1.1.1.10 +++ glibc-2.3.2-redhat/iconv/iconvconfig.c 12 Jun 2003 09:55:36 -0000 1.14 @@ -988,6 +988,34 @@ next_prime (uint32_t seed) module name offset (following last entry with step count 0) */ + +static struct hash_entry *hash_table; +static size_t hash_size; + +/* Function to insert the names. */ +static void name_insert (const void *nodep, VISIT value, int level) +{ + struct name *name; + unsigned int idx; + unsigned int hval2; + + if (value != leaf && value != postorder) + return; + + name = *(struct name **) nodep; + idx = name->hashval % hash_size; + hval2 = 1 + name->hashval % (hash_size - 2); + + while (hash_table[idx].string_offset != 0) + if ((idx += hval2) >= hash_size) + idx -= hash_size; + + hash_table[idx].string_offset = strtaboffset (name->strent); + + assert (name->module_idx != -1); + hash_table[idx].module_idx = name->module_idx; +} + static int write_output (void) { @@ -995,8 +1023,6 @@ write_output (void) char *string_table; size_t string_table_size; struct gconvcache_header header; - struct hash_entry *hash_table; - size_t hash_size; struct module_entry *module_table; char *extra_table; char *cur_extra_table; @@ -1008,30 +1034,6 @@ write_output (void) char tmpfname[prefix_len + sizeof (GCONV_MODULES_CACHE) + strlen (".XXXXXX")]; char finalname[prefix_len + sizeof (GCONV_MODULES_CACHE)]; - - /* Function to insert the names. */ - static void name_insert (const void *nodep, VISIT value, int level) - { - struct name *name; - unsigned int idx; - unsigned int hval2; - - if (value != leaf && value != postorder) - return; - - name = *(struct name **) nodep; - idx = name->hashval % hash_size; - hval2 = 1 + name->hashval % (hash_size - 2); - - while (hash_table[idx].string_offset != 0) - if ((idx += hval2) >= hash_size) - idx -= hash_size; - - hash_table[idx].string_offset = strtaboffset (name->strent); - - assert (name->module_idx != -1); - hash_table[idx].module_idx = name->module_idx; - } /* Open the output file. */ assert (GCONV_MODULES_CACHE[0] == '/');