[asterisk-dev] [asterisk-commits] russell: trunk r90351 - in /trunk: ./ apps/ channels/ include/asterisk/ main/

Luigi Rizzo rizzo at icir.org
Fri Nov 30 14:08:54 CST 2007


On Fri, Nov 30, 2007 at 07:34:48PM -0000, SVN commits to the Asterisk project wrote:
> Author: russell
> Date: Fri Nov 30 13:34:47 2007
> New Revision: 90351
> 
> URL: http://svn.digium.com/view/asterisk?view=rev&rev=90351
> Log:
> Merged revisions 90348 via svnmerge from 
> https://origsvn.digium.com/svn/asterisk/branches/1.4
> 
> ........
> r90348 | russell | 2007-11-30 13:26:04 -0600 (Fri, 30 Nov 2007) | 8 lines
> 
> Change the behavior of ao2_link().  Previously, in inherited a reference.
> Now, it automatically increases the reference count to reflect the reference
> that is now held by the container.
>
> This was done to be more consistent with ao2_unlink(), which automatically
> releases the reference held by the container.  It also makes it so it is
> no longer possible for a pointer to be invalid after ao2_link() returns.

Ok, i think this is a reasonable decision on the grounds of the additional
robustness it gives - we shouldn't see anymore things like

	ao2_link(queues, q);
	queue_ref(q);

where q was invalid after the ao2_link.

For the records, the reason we made ao2_link() inherit the reference
was that we expected it to be the normal case: create an object, fill it up
appropriately, and then put it into a container and be done with it.
I have to admit that, at least judging from this commit, our assumption
was true only by a very small margin, and in any case the robustness
implications are more important

	cheers
	luigi



More information about the asterisk-dev mailing list