----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviewboard.asterisk.org/r/4108/#review15185 -----------------------------------------------------------
/trunk/main/astobj2.c <https://reviewboard.asterisk.org/r/4108/#comment25845> Only if the code actually follows the rules. :) /trunk/main/astobj2.c <https://reviewboard.asterisk.org/r/4108/#comment25844> Rather than play games with the real object's ref count. How about replacing the indicated code with this: ---------- /* Unlink the obj from the weak proxy */ internal_weakproxy->priv_data.weakptr = NULL; obj->priv_data.weakptr = NULL; /* Notify the subscribers that obj is about to die. */ weakproxy_run_callbacks(weakproxy); /* * Weak is already unlinked from obj so this won't recurse. * This will destroy obj. */ ao2_ref(user_data, -1); ---------- The test to release the weakproxy ref below needs to be adjusted to: if (current_value == 1) and that code moved to just after the unlock of weakproxy. /trunk/main/astobj2.c <https://reviewboard.asterisk.org/r/4108/#comment25843> The comment doesn't make sense. How is destructor_fn supposed to access values in the weak proxy? The real object is no longer linked with the weakproxy. /trunk/tests/test_astobj2_weaken.c <https://reviewboard.asterisk.org/r/4108/#comment25846> Heh. Interesting ability to reuse weakproxy objects. Not sure how useful it will be. - rmudgett On April 3, 2015, 11:58 a.m., Corey Farrell wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviewboard.asterisk.org/r/4108/ > ----------------------------------------------------------- > > (Updated April 3, 2015, 11:58 a.m.) > > > Review request for Asterisk Developers, George Joseph and rmudgett. > > > Bugs: ASTERISK-24936 > https://issues.asterisk.org/jira/browse/ASTERISK-24936 > > > Repository: Asterisk > > > Description > ------- > > This implements "weak" references. The weakproxy object is a real ao2 with > normal reference counting of its own. When a weakproxy is pointed to a > normal object they hold references to each other. The normal object is > automatically freed when a single reference remains (the weakproxy). The > weakproxy also supports subscriptions that will notify callbacks when it does > not point to any real object. > > > Diffs > ----- > > /trunk/tests/test_astobj2_weaken.c PRE-CREATION > /trunk/main/astobj2.c 433964 > /trunk/include/asterisk/astobj2.h 433964 > > Diff: https://reviewboard.asterisk.org/r/4108/diff/ > > > Testing > ------- > > Ran the included test with REF_DEBUG enabled under valgrind. No reference > leaks or improper memory access. Though this does not test for races, I > don't know of an automated way to do that. > > > Thanks, > > Corey Farrell > >
-- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- asterisk-dev mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/asterisk-dev