This is an automated email from the ASF dual-hosted git repository. pengzheng pushed a commit to branch hotfix/long_hash in repository https://gitbox.apache.org/repos/asf/celix.git
commit 0ac43f12e43d13e64505575fb5fb7300cfa662a8 Author: PengZheng <[email protected]> AuthorDate: Mon Jul 4 21:14:20 2022 +0800 Fix hash when sizeof(long) == 4. Also remove cmake as conan tool_requires. --- conanfile.py | 2 -- libs/utils/src/celix_hash_map.c | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/conanfile.py b/conanfile.py index 014bb357..0deb7979 100644 --- a/conanfile.py +++ b/conanfile.py @@ -37,8 +37,6 @@ class CelixConan(ConanFile): "It is a framework to develop (dynamic) modular software applications " \ "using component and/or service-oriented programming." - tool_requires = "cmake/3.17.5" - options = { "enable_testing": [True, False], "enable_code_coverage": [True, False], diff --git a/libs/utils/src/celix_hash_map.c b/libs/utils/src/celix_hash_map.c index ed5ff4bc..591aa114 100644 --- a/libs/utils/src/celix_hash_map.c +++ b/libs/utils/src/celix_hash_map.c @@ -91,7 +91,7 @@ static unsigned int celix_stringHashMap_hash(const celix_hash_map_key_t* key) { } static unsigned int celix_longHashMap_hash(const celix_hash_map_key_t* key) { - return key->longKey ^ (key->longKey >> 32); + return __builtin_choose_expr(sizeof(long) == 4, key->longKey ^ (key->longKey >> 16), key->longKey ^ (key->longKey >> 32)); } static bool celix_stringHashMap_equals(const celix_hash_map_key_t* key1, const celix_hash_map_key_t* key2) {
