]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
automerge commit
authorAutomerge script <automerge@asterisk.org>
Tue, 18 Jul 2006 00:02:33 +0000 (00:02 +0000)
committerAutomerge script <automerge@asterisk.org>
Tue, 18 Jul 2006 00:02:33 +0000 (00:02 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@37851 65c4cc65-6c06-0410-ace0-fbb531ad65f3

frame.c

diff --git a/frame.c b/frame.c
index d2fc71cb188c41e8732ece8461c6487b3e050ab9..2a7ee861054c3e92c12c57ab1258ae8743dd4cd6 100644 (file)
--- a/frame.c
+++ b/frame.c
@@ -374,7 +374,7 @@ struct ast_frame *ast_frdup(struct ast_frame *f)
                srclen = strlen(f->src);
        if (srclen > 0)
                len += srclen + 1;
-       buf = malloc(len);
+       buf = calloc(1, len);
        if (!buf)
                return NULL;
        out = buf;
@@ -387,16 +387,15 @@ struct ast_frame *ast_frdup(struct ast_frame *f)
        out->delivery = f->delivery;
        out->mallocd = AST_MALLOCD_HDR;
        out->offset = AST_FRIENDLY_OFFSET;
-       out->data = buf + sizeof(struct ast_frame) + AST_FRIENDLY_OFFSET;
+       if (out->datalen) {
+               out->data = buf + sizeof(struct ast_frame) + AST_FRIENDLY_OFFSET;
+               memcpy(out->data, f->data, out->datalen);       
+       }
        if (srclen > 0) {
                out->src = out->data + f->datalen;
                /* Must have space since we allocated for it */
                strcpy((char *)out->src, f->src);
-       } else
-               out->src = NULL;
-       out->prev = NULL;
-       out->next = NULL;
-       memcpy(out->data, f->data, out->datalen);       
+       }
        return out;
 }