mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-04 11:58:52 +00:00
Merge "Astobj2: Correctly treat hash_fn returning INT_MIN"
This commit is contained in:
@@ -215,8 +215,7 @@ static struct hash_bucket_node *hash_ao2_new_node(struct ao2_container_hash *sel
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
i = abs(self->hash_fn(obj_new, OBJ_SEARCH_OBJECT));
|
i = abs(self->hash_fn(obj_new, OBJ_SEARCH_OBJECT) % self->n_buckets);
|
||||||
i %= self->n_buckets;
|
|
||||||
|
|
||||||
__ao2_ref(obj_new, +1, tag ?: "Container node creation", file, line, func);
|
__ao2_ref(obj_new, +1, tag ?: "Container node creation", file, line, func);
|
||||||
node->common.obj = obj_new;
|
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_OBJECT:
|
||||||
case OBJ_SEARCH_KEY:
|
case OBJ_SEARCH_KEY:
|
||||||
/* we know hash can handle this case */
|
/* we know hash can handle this case */
|
||||||
bucket_cur = abs(self->hash_fn(arg, flags & OBJ_SEARCH_MASK));
|
bucket_cur = abs(self->hash_fn(arg, flags & OBJ_SEARCH_MASK)
|
||||||
bucket_cur %= self->n_buckets;
|
% self->n_buckets);
|
||||||
state->sort_fn = self->common.sort_fn;
|
state->sort_fn = self->common.sort_fn;
|
||||||
break;
|
break;
|
||||||
case OBJ_SEARCH_PARTIAL_KEY:
|
case OBJ_SEARCH_PARTIAL_KEY:
|
||||||
@@ -960,8 +959,8 @@ static int hash_ao2_integrity(struct ao2_container_hash *self)
|
|||||||
++count_obj;
|
++count_obj;
|
||||||
|
|
||||||
/* Check container hash key for expected bucket. */
|
/* Check container hash key for expected bucket. */
|
||||||
bucket_exp = abs(self->hash_fn(node->common.obj, OBJ_SEARCH_OBJECT));
|
bucket_exp = abs(self->hash_fn(node->common.obj, OBJ_SEARCH_OBJECT)
|
||||||
bucket_exp %= self->n_buckets;
|
% self->n_buckets);
|
||||||
if (bucket != bucket_exp) {
|
if (bucket != bucket_exp) {
|
||||||
ast_log(LOG_ERROR, "Bucket %d node hashes to bucket %d!\n",
|
ast_log(LOG_ERROR, "Bucket %d node hashes to bucket %d!\n",
|
||||||
bucket, bucket_exp);
|
bucket, bucket_exp);
|
||||||
|
Reference in New Issue
Block a user