Issue
=====
g_hash_table_lookup() returns `NULL` if the key is not found, but also
when the value is actually `NULL` (or 0). Therefore
bt_g_hash_table_contains() returns false when there's actually a
`NULL`/0 value for the given key.
Solution
========
Use g_hash_table_lookup_extended() which truly returns whether or not
the given key was found, and discard the returned value.
Known drawbacks
===============
None.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
static inline gboolean
bt_g_hash_table_contains(GHashTable *hash_table, gconstpointer key)
{
- const char *value;
+ gpointer orig_key;
+ gpointer value;
- value = g_hash_table_lookup(hash_table, key);
- if (value == NULL) {
- return FALSE;
- }
-
- return TRUE;
+ return g_hash_table_lookup_extended(hash_table, key, &orig_key,
+ &value);
}
#endif