[asterisk-dev] [Code Review] astobj2: Avoid using temporary objects + ao2_find() with OBJ_POINTER
    Russell Bryant 
    reviewboard at asterisk.org
       
    Fri May 27 17:52:05 CDT 2011
    
    
  
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviewboard.asterisk.org/r/1184/
-----------------------------------------------------------
(Updated 2011-05-27 17:52:05.829286)
Review request for Asterisk Developers.
Changes
-------
1) Update test_astobj2 to exercise OBJ_KEY.
2) Update changes to chan_iax2 to fix the cmp functions too, not just hash functions.
Everything in test_astobj2 still passes.
Summary
-------
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.
Diffs (updated)
-----
  /branches/1.8/channels/chan_iax2.c 321272 
  /branches/1.8/include/asterisk/astobj2.h 321272 
  /branches/1.8/main/astobj2.c 321272 
  /branches/1.8/tests/test_astobj2.c 321272 
Diff: https://reviewboard.asterisk.org/r/1184/diff
Testing
-------
It compiles.  I'm just throwing out the idea right now.  If people seem to think it makes sense, I will certainly try calls before committing anything.
Thanks,
Russell
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-dev/attachments/20110527/e33ce507/attachment.htm>
    
    
More information about the asterisk-dev
mailing list