astobj2: Avoid using temporary objects + ao2_find() with OBJ_POINTER.
authorRussell Bryant <russell@russellbryant.com>
Fri, 29 Jul 2011 19:34:36 +0000 (19:34 +0000)
committerRussell Bryant <russell@russellbryant.com>
Fri, 29 Jul 2011 19:34:36 +0000 (19:34 +0000)
commit6a15e95a324bfd4ab6824f4cf9e047d7db684c52
treeca7f78316d950a6b7a8d5f75e46581ef828e111e
parentd2ed4ed5f70b7d670623ad1d7dee8e9268ff175a
astobj2: Avoid using temporary objects + ao2_find() with OBJ_POINTER.

There is a fairly common pattern making its way through the code base where we
put a temporary object on the stack so we can call ao2_find() with OBJ_POINTER.
The purpose is so that it can be passed into the object hash function.
However, this really seems like a hack and potentially error prone.  This patch
is a first stab at approach to avoid having to do that.

It adds a new flag, OBJ_KEY, which can be used instead of OBJ_POINTER in these
situations.  Then, the hash function can know whether it was given an object or
some custom data to hash.

The patch also changes some uses of ao2_find() for iax2_user and iax2_peer
objects to reflect how OBJ_KEY would be used.

So long, and thanks for all the fish.

Review: https://reviewboard.asterisk.org/r/1184/

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@330273 65c4cc65-6c06-0410-ace0-fbb531ad65f3
channels/chan_iax2.c
include/asterisk/astobj2.h
main/astobj2.c
tests/test_astobj2.c