]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
The other day when I went through making changes as a result of the ao2_link()
authorRussell Bryant <russell@russellbryant.com>
Sun, 2 Dec 2007 18:18:52 +0000 (18:18 +0000)
committerRussell Bryant <russell@russellbryant.com>
Sun, 2 Dec 2007 18:18:52 +0000 (18:18 +0000)
change, I added some code to set pointers to NULL after they were unreferenced.
This pointed out that in this place, the object was unreferenced before the
code was done using it.  So, move the unref down a little bit.
(crash reported by jmls on IRC)

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@90470 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_queue.c

index bee1997ac780c45f0158efc1e01cf4c14b2c9486..db4a574ba0b878911f77ffe02cf66a0f7090eb3c 100644 (file)
@@ -3038,8 +3038,6 @@ static int add_to_queue(const char *queuename, const char *interface, const char
                if ((new_member = create_queue_member(interface, membername, penalty, paused))) {
                        new_member->dynamic = 1;
                        ao2_link(q->members, new_member);
-                       ao2_ref(new_member, -1);
-                       new_member = NULL;
                        q->membercount++;
                        manager_event(EVENT_FLAG_AGENT, "QueueMemberAdded",
                                "Queue: %s\r\n"
@@ -3056,6 +3054,9 @@ static int add_to_queue(const char *queuename, const char *interface, const char
                                new_member->penalty, new_member->calls, (int) new_member->lastcall,
                                new_member->status, new_member->paused);
                        
+                       ao2_ref(new_member, -1);
+                       new_member = NULL;
+
                        if (dump)
                                dump_queue_members(q);