g_str_equal: Provide macro for optimization

g_str_equal() is a nicer API than strcmp()==0, and less error prone.
However, forcing a function call prevents compiler from doing
optimizations. In the case it is not used as callback to GHashTable,
provide a macro that calls strcmp directly. This also has the side
effect that it forces arguments to be `const char *` instead of
`gconstpointer` in the case it is not used as callback, which adds type
safety.

Fixes: #2775
This commit is contained in:
Xavier Claessens
2022-09-29 08:16:47 -04:00
parent ce48bf1abd
commit 6e341750df
2 changed files with 6 additions and 2 deletions

View File

@@ -2323,8 +2323,8 @@ g_hash_table_get_values (GHashTable *hash_table)
* Returns: %TRUE if the two keys match
*/
gboolean
g_str_equal (gconstpointer v1,
gconstpointer v2)
(g_str_equal) (gconstpointer v1,
gconstpointer v2)
{
const gchar *string1 = v1;
const gchar *string2 = v2;