https://sourceforge.net/p/unixtop/bugs/43/ --- a/hash.c +++ b/hash.c @@ -1354,7 +1354,7 @@ hash_add_pidthr(hash_table *ht, pidthr_t hi->value = value; /* hash to the bucket */ - bucket = &(ht->buckets[((key.k_thr * 10000 + key.k_pid) % ht->num_buckets)]); + bucket = &(ht->buckets[(((unsigned long)(key.k_thr) * 10000U + (unsigned long)(key.k_pid)) % ht->num_buckets)]); /* walk the list to make sure we do not have a duplicate */ ll = &(bucket->list); @@ -1408,7 +1408,7 @@ hash_replace_pidthr(hash_table *ht, pidt pidthr_t k1; /* find the bucket */ - bucket = &(ht->buckets[((key.k_thr * 10000 + key.k_pid) % ht->num_buckets)]); + bucket = &(ht->buckets[(((unsigned long)(key.k_thr) * 10000U + (unsigned long)(key.k_pid)) % ht->num_buckets)]); /* walk the list until we find the existing item */ ll = &(bucket->list); @@ -1460,7 +1460,7 @@ hash_lookup_pidthr(hash_table *ht, pidth pidthr_t k1; result = NULL; - if ((bucket = &(ht->buckets[((key.k_thr * 10000 + key.k_pid) % ht->num_buckets)])) != NULL) + if ((bucket = &(ht->buckets[(((unsigned long)(key.k_thr) * 10000U + (unsigned long)(key.k_pid)) % ht->num_buckets)])) != NULL) { ll = &(bucket->list); li = LL_FIRST(ll); @@ -1499,7 +1499,7 @@ hash_remove_pidthr(hash_table *ht, pidth pidthr_t k1; result = NULL; - if ((bucket = &(ht->buckets[((key.k_thr * 10000 + key.k_pid) % ht->num_buckets)])) != NULL) + if ((bucket = &(ht->buckets[(((unsigned long)(key.k_thr) * 10000U + (unsigned long)(key.k_pid)) % ht->num_buckets)])) != NULL) { ll = &(bucket->list); li = LL_FIRST(ll);