]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
automerge commit
authorAutomerge script <automerge@asterisk.org>
Sat, 6 May 2006 03:06:16 +0000 (03:06 +0000)
committerAutomerge script <automerge@asterisk.org>
Sat, 6 May 2006 03:06:16 +0000 (03:06 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2-netsec@25200 65c4cc65-6c06-0410-ace0-fbb531ad65f3

frame.c

diff --git a/frame.c b/frame.c
index fa5538f36dd1fcc5f2a2bb6053b024fe5c3562e0..a43a9834d75c9701202595f42341564d09406152 100644 (file)
--- a/frame.c
+++ b/frame.c
@@ -304,6 +304,8 @@ void ast_frfree(struct ast_frame *fr)
 struct ast_frame *ast_frisolate(struct ast_frame *fr)
 {
        struct ast_frame *out;
+       void *newdata;
+
        if (!(fr->mallocd & AST_MALLOCD_HDR)) {
                /* Allocate a new header if needed */
                out = ast_frame_header_new();
@@ -318,27 +320,31 @@ struct ast_frame *ast_frisolate(struct ast_frame *fr)
                out->offset = fr->offset;
                out->src = NULL;
                out->data = fr->data;
-       } else {
+       } else
                out = fr;
-       }
+       
        if (!(fr->mallocd & AST_MALLOCD_SRC)) {
                if (fr->src)
                        out->src = strdup(fr->src);
        } else
                out->src = fr->src;
+       
        if (!(fr->mallocd & AST_MALLOCD_DATA))  {
-               out->data = malloc(fr->datalen + AST_FRIENDLY_OFFSET);
-               if (!out->data) {
+               newdata = malloc(fr->datalen + AST_FRIENDLY_OFFSET);
+               if (!newdata) {
                        free(out);
                        ast_log(LOG_WARNING, "Out of memory\n");
                        return NULL;
                }
-               out->data += AST_FRIENDLY_OFFSET;
+               newdata += AST_FRIENDLY_OFFSET;
                out->offset = AST_FRIENDLY_OFFSET;
                out->datalen = fr->datalen;
-               memcpy(out->data, fr->data, fr->datalen);
+               memcpy(newdata, fr->data, fr->datalen);
+               out->data = newdata;
        }
+
        out->mallocd = AST_MALLOCD_HDR | AST_MALLOCD_SRC | AST_MALLOCD_DATA;
+       
        return out;
 }