You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@celix.apache.org by pe...@apache.org on 2022/07/04 13:15:43 UTC

[celix] branch hotfix/long_hash created (now 0ac43f12)

This is an automated email from the ASF dual-hosted git repository.

pengzheng pushed a change to branch hotfix/long_hash
in repository https://gitbox.apache.org/repos/asf/celix.git


      at 0ac43f12 Fix hash when sizeof(long) == 4.

This branch includes the following new commits:

     new 0ac43f12 Fix hash when sizeof(long) == 4.

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[celix] 01/01: Fix hash when sizeof(long) == 4.

Posted by pe...@apache.org.
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 <ho...@gmail.com>
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) {