summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2017-11-15 15:14:19 +0100
committerThomas Haller <thaller@redhat.com>2017-11-16 11:49:51 +0100
commitc3d98a3df6432f3d9d143dec6d328feec0873b4a (patch)
tree02749c94cb411a176f6b2ca954bbdd60e1c58ab5
parent3751cceeec2bdf246c04e5bd846086e6feeeb7b6 (diff)
downloadNetworkManager-c3d98a3df6432f3d9d143dec6d328feec0873b4a.tar.gz
shared: optimize nm_hash_str() for NULL to not use siphash24()
-rw-r--r--libnm-core/tests/test-general.c4
-rw-r--r--shared/nm-utils/nm-hash-utils.c9
2 files changed, 8 insertions, 5 deletions
diff --git a/libnm-core/tests/test-general.c b/libnm-core/tests/test-general.c
index 59da6b0c34..0529d07d1f 100644
--- a/libnm-core/tests/test-general.c
+++ b/libnm-core/tests/test-general.c
@@ -171,6 +171,10 @@ test_nm_hash (void)
g_assert (nm_hash_static (0));
g_assert (nm_hash_static (777));
+ g_assert (nm_hash_str (NULL));
+ g_assert (nm_hash_str (""));
+ g_assert (nm_hash_str ("a"));
+
_test_hash_str ("");
_test_hash_str ("a");
_test_hash_str ("aa");
diff --git a/shared/nm-utils/nm-hash-utils.c b/shared/nm-utils/nm-hash-utils.c
index 4cfb62bd50..0d0ba373a1 100644
--- a/shared/nm-utils/nm-hash-utils.c
+++ b/shared/nm-utils/nm-hash-utils.c
@@ -127,11 +127,10 @@ nm_hash_str (const char *str)
{
NMHashState h;
- if (str) {
- nm_hash_init (&h, 1867854211u);
- nm_hash_update_str (&h, str);
- } else
- nm_hash_init (&h, 842995561u);
+ if (!str)
+ return nm_hash_static (1867854211u);
+ nm_hash_init (&h, 1867854211u);
+ nm_hash_update_str (&h, str);
return nm_hash_complete (&h);
}