aboutsummaryrefslogtreecommitdiffstats
path: root/main/astobj2.c
diff options
context:
space:
mode:
authorrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-08-22 22:40:27 +0000
committerrussell <russell@f38db490-d61c-443f-a65b-d21fe96a405b>2007-08-22 22:40:27 +0000
commitcb9c9e1df4ec6f68f71505a0b8d036c11a73f739 (patch)
tree872fbcecfd835a80f82f13e23a6e41975fa8c438 /main/astobj2.c
parent20a5f4d52fa21c470b66f15e8d2cba2350cbe8d9 (diff)
When converting this code to use the list macros, I changed it so objects are
added to the head of a bucket instead of the tail. However, while looking over code with mmichelson, we noticed that the algorithm used in ao2_iterator_next requires that items are added to the tail. This wouldn't have caused any huge problem, but it wasn't correct. It meant that if an object was added to a container while you were iterating it, and it was added to the same bucket that the current element is in, then the new object would be returned by ao2_iterator_next, and any other objects in the bucket would be bypassed in the traversal. git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.4@80424 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/astobj2.c')
-rw-r--r--main/astobj2.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/main/astobj2.c b/main/astobj2.c
index 9d2b0af2c..4f338af44 100644
--- a/main/astobj2.c
+++ b/main/astobj2.c
@@ -339,7 +339,7 @@ void *ao2_link(ao2_container *c, void *user_data)
i %= c->n_buckets;
p->astobj = obj;
p->version = ast_atomic_fetchadd_int(&c->version, 1);
- AST_LIST_INSERT_HEAD(&c->buckets[i], p, entry);
+ AST_LIST_INSERT_TAIL(&c->buckets[i], p, entry);
ast_atomic_fetchadd_int(&c->elements, 1);
ao2_unlock(c);