Merged revisions 115551 via svnmerge from
authorRussell Bryant <russell@russellbryant.com>
Thu, 8 May 2008 15:26:49 +0000 (15:26 +0000)
committerRussell Bryant <russell@russellbryant.com>
Thu, 8 May 2008 15:26:49 +0000 (15:26 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

........
r115551 | russell | 2008-05-08 10:24:54 -0500 (Thu, 08 May 2008) | 4 lines

Don't use a channel before checking for channel allocation failure.
(closes issue #12609)
Reported by: edantie

........

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

main/pbx.c

index 73a5761..b2c5e22 100644 (file)
@@ -6310,13 +6310,13 @@ int ast_async_goto(struct ast_channel *chan, const char *context, const char *ex
                   the PBX, we have to make a new channel, masquerade, and start the PBX
                   at the new location */
                struct ast_channel *tmpchan = ast_channel_alloc(0, chan->_state, 0, 0, chan->accountcode, chan->exten, chan->context, chan->amaflags, "AsyncGoto/%s", chan->name);
-               if (chan->cdr) {
-                       ast_cdr_discard(tmpchan->cdr);
-                       tmpchan->cdr = ast_cdr_dup(chan->cdr);  /* share the love */
-               }
-               if (!tmpchan)
+               if (!tmpchan) {
                        res = -1;
-               else {
+               } else {
+                       if (chan->cdr) {
+                               ast_cdr_discard(tmpchan->cdr);
+                               tmpchan->cdr = ast_cdr_dup(chan->cdr);  /* share the love */
+                       }
                        /* Make formats okay */
                        tmpchan->readformat = chan->readformat;
                        tmpchan->writeformat = chan->writeformat;