Re: [gtk-list] (test case) GHash bug?
- From: Damon Chaplin <damon karuna freeserve co uk>
- To: gtk-list redhat com
- Subject: Re: [gtk-list] (test case) GHash bug?
- Date: Mon, 25 Jan 1999 00:19:20 +0000
Jeff Garzik wrote:
> The following test (attached) inserts 20 values into a hash table. The
> key is a number (0-19) stored as a string, hashed w/ a custom CRC hash
> function. The value is a g_strdup'd copy of that same number, stored as
> a string formatted from "%d value".
> The current ghash code seems to be failing miserably on this easy test.
> g_print("create table\n");
> h = g_hash_table_new (second_hash, second_hash_cmp);
> for (i=0; i<20; i++)
> sprintf (new_key, "%d", i);
> g_assert (atoi (new_key) == i);
> sprintf (new_val, "%d value", i);
> g_assert (atoi (new_val) == i);
> new_val_copy = g_strdup (new_val);
> g_assert (new_val_copy != NULL);
> g_assert (*new_val_copy != 0);
> g_print("table insert %d, key=\"%s\", val=\"%s\"\n",
> i, new_key, new_val_copy);
> g_hash_table_insert (h, new_key, new_val_copy);
You didn't copy the key. The hash table doesn't copy the key or the
value, so all the keys ended up pointing to the same buffer.
I tried it with code to copy the key and it was OK.
] [Thread Prev