[asterisk-commits] russell: branch 1.4 r80424 - /branches/1.4/main/astobj2.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Wed Aug 22 17:40:27 CDT 2007
Author: russell
Date: Wed Aug 22 17:40:27 2007
New Revision: 80424
URL: http://svn.digium.com/view/asterisk?view=rev&rev=80424
Log:
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.
Modified:
branches/1.4/main/astobj2.c
Modified: branches/1.4/main/astobj2.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/main/astobj2.c?view=diff&rev=80424&r1=80423&r2=80424
==============================================================================
--- branches/1.4/main/astobj2.c (original)
+++ branches/1.4/main/astobj2.c Wed Aug 22 17:40:27 2007
@@ -339,7 +339,7 @@
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);
More information about the asterisk-commits
mailing list