Forgot to mention that I am using Glib 2.42 on Linux. ---------------------------------------- > From: stathisgotsis@xxxxxxxxxxx > To: gtk-list@xxxxxxxxx > Subject: GHashTable strange behavior > Date: Wed, 4 Mar 2015 20:44:04 +0200 > > Hi all, > > I am facing some strange behavior with GHashTable. When I use g_hash_table_insert to insert the same key twice, it does not return FALSE, but TRUE: > > typedef struct { > int a, b; > } key_t; > > typedef struct { > int a, b; > } value_t; > > guint hash_func(gconstpointer key) > { > return hash((const char *)key, sizeof(key_t)); > } > > gboolean equal_func(gconstpointer a, gconstpointer b) > { > return (memcmp(a, b, sizeof(key_t)) == 0); > } > > void destroy_key(gpointer data) > { > free(data); > } > > void destroy_value(gpointer data) > { > free(data); > } > > TEST_F(HashTableTests, test_add) > { > > GHashTable *hash_table = g_hash_table_new_full(hash_func, equal_func, destroy_key, destroy_value); > > key_t *key1 = (key_t *)malloc(sizeof(*key1)); > value_t *value1 = (value_t *)malloc(sizeof(*value1)); > > key_t *key2 = (key_t *)malloc(sizeof(*key2)); > value_t *value2 = (value_t *)malloc(sizeof(*value2)); > > key1->a = 1; > key1->b = 2; > value1->a = 3; > value1->b = 4; > > key2->a = 1; > key2->b = 2; > value2->a = 3; > value2->b = 4; > > ASSERT_TRUE(g_hash_table_insert(hash_table, key1, value1)); > > ASSERT_FALSE(g_hash_table_insert(hash_table, key2, value2)); // Assertion fails > > g_hash_table_destroy(hash_table); > } > > Any ideas? > > BR, > Stathis > _______________________________________________ > gtk-list mailing list > gtk-list@xxxxxxxxx > https://mail.gnome.org/mailman/listinfo/gtk-list _______________________________________________ gtk-list mailing list gtk-list@xxxxxxxxx https://mail.gnome.org/mailman/listinfo/gtk-list