summaryrefslogtreecommitdiff
path: root/main
diff options
context:
space:
mode:
authorJoshua Colp <jcolp@digium.com>2015-05-26 16:07:21 -0500
committerGerrit Code Review <gerrit2@gerrit.digium.api>2015-05-26 16:07:21 -0500
commit3a8eb3c476a0968b82bf9fb5e2e924567661e35f (patch)
tree2dbe6a466e7baeb7f11b36ef14ff78300a091b91 /main
parenta7af6bca3cb434e75c6ac2fbb0ed45208295b15d (diff)
parent23a798fecce1cf0fb64edc54953dc6bf1a49a402 (diff)
Merge "Astobj2: Correctly treat hash_fn returning INT_MIN"
Diffstat (limited to 'main')
-rw-r--r--main/astobj2_hash.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/main/astobj2_hash.c b/main/astobj2_hash.c
index 91ad2d2d0..b036911b4 100644
--- a/main/astobj2_hash.c
+++ b/main/astobj2_hash.c
@@ -215,8 +215,7 @@ static struct hash_bucket_node *hash_ao2_new_node(struct ao2_container_hash *sel
return NULL;
}
- i = abs(self->hash_fn(obj_new, OBJ_SEARCH_OBJECT));
- i %= self->n_buckets;
+ i = abs(self->hash_fn(obj_new, OBJ_SEARCH_OBJECT) % self->n_buckets);
__ao2_ref(obj_new, +1, tag ?: "Container node creation", file, line, func);
node->common.obj = obj_new;
@@ -362,8 +361,8 @@ static struct hash_bucket_node *hash_ao2_find_first(struct ao2_container_hash *s
case OBJ_SEARCH_OBJECT:
case OBJ_SEARCH_KEY:
/* we know hash can handle this case */
- bucket_cur = abs(self->hash_fn(arg, flags & OBJ_SEARCH_MASK));
- bucket_cur %= self->n_buckets;
+ bucket_cur = abs(self->hash_fn(arg, flags & OBJ_SEARCH_MASK)
+ % self->n_buckets);
state->sort_fn = self->common.sort_fn;
break;
case OBJ_SEARCH_PARTIAL_KEY:
@@ -960,8 +959,8 @@ static int hash_ao2_integrity(struct ao2_container_hash *self)
++count_obj;
/* Check container hash key for expected bucket. */
- bucket_exp = abs(self->hash_fn(node->common.obj, OBJ_SEARCH_OBJECT));
- bucket_exp %= self->n_buckets;
+ bucket_exp = abs(self->hash_fn(node->common.obj, OBJ_SEARCH_OBJECT)
+ % self->n_buckets);
if (bucket != bucket_exp) {
ast_log(LOG_ERROR, "Bucket %d node hashes to bucket %d!\n",
bucket, bucket_exp);