mirror of
https://gitlab.gnome.org/GNOME/calls.git
synced 2025-01-10 13:55:32 +00:00
contacts-provider: Handle NULL and empty strings graceful in lookup
Fixes a crash where we asserted on best match when the id was NULL or empty. Closes: #567
This commit is contained in:
parent
0da19790c5
commit
a478be1795
2 changed files with 6 additions and 6 deletions
|
@ -422,9 +422,9 @@ calls_contacts_provider_lookup_id (CallsContactsProvider *self,
|
||||||
g_return_val_if_fail (CALLS_IS_CONTACTS_PROVIDER (self), NULL);
|
g_return_val_if_fail (CALLS_IS_CONTACTS_PROVIDER (self), NULL);
|
||||||
|
|
||||||
if (STR_IS_NULL_OR_EMPTY (id))
|
if (STR_IS_NULL_OR_EMPTY (id))
|
||||||
return NULL;
|
best_match = g_hash_table_lookup (self->best_matches, "");
|
||||||
|
else
|
||||||
best_match = g_hash_table_lookup (self->best_matches, id);
|
best_match = g_hash_table_lookup (self->best_matches, id);
|
||||||
|
|
||||||
if (best_match)
|
if (best_match)
|
||||||
return g_object_ref (best_match);
|
return g_object_ref (best_match);
|
||||||
|
@ -435,7 +435,7 @@ calls_contacts_provider_lookup_id (CallsContactsProvider *self,
|
||||||
best_match, "country-code",
|
best_match, "country-code",
|
||||||
G_BINDING_SYNC_CREATE);
|
G_BINDING_SYNC_CREATE);
|
||||||
|
|
||||||
g_hash_table_insert (self->best_matches, g_strdup (id), best_match);
|
g_hash_table_insert (self->best_matches, g_strdup (id ?: ""), best_match);
|
||||||
|
|
||||||
return g_object_ref (best_match);
|
return g_object_ref (best_match);
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,10 +16,10 @@ test_contacts_null_contact (void)
|
||||||
{
|
{
|
||||||
g_autoptr (CallsContactsProvider) contacts_provider =
|
g_autoptr (CallsContactsProvider) contacts_provider =
|
||||||
calls_contacts_provider_new ();
|
calls_contacts_provider_new ();
|
||||||
CallsBestMatch *best_match;
|
g_autoptr (CallsBestMatch) best_match = NULL;
|
||||||
|
|
||||||
best_match = calls_contacts_provider_lookup_id (contacts_provider, NULL);
|
best_match = calls_contacts_provider_lookup_id (contacts_provider, NULL);
|
||||||
g_assert_null (best_match);
|
g_assert_nonnull (best_match);
|
||||||
|
|
||||||
g_assert_cmpstr (calls_best_match_get_primary_info (best_match), ==, "Anonymous caller");
|
g_assert_cmpstr (calls_best_match_get_primary_info (best_match), ==, "Anonymous caller");
|
||||||
g_assert_cmpstr (calls_best_match_get_secondary_info (best_match), ==, "");
|
g_assert_cmpstr (calls_best_match_get_secondary_info (best_match), ==, "");
|
||||||
|
|
Loading…
Reference in a new issue