From ceb572a2808d82bf43cacd82417c033cd4f40728 Mon Sep 17 00:00:00 2001 From: James Golovich <james@gnuinter.net> Date: Wed, 28 Apr 2004 17:54:01 +0000 Subject: [PATCH] ast_frdup optimization: only call strlen once and save the result git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@2801 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- frame.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/frame.c b/frame.c index 3fa8ff5d6e..b8709eee13 100755 --- a/frame.c +++ b/frame.c @@ -282,13 +282,15 @@ struct ast_frame *ast_frisolate(struct ast_frame *fr) struct ast_frame *ast_frdup(struct ast_frame *f) { struct ast_frame *out; - int len; + int len, srclen = 0; void *buf; /* Start with standard stuff */ len = sizeof(struct ast_frame) + AST_FRIENDLY_OFFSET + f->datalen; /* If we have a source, add space for it */ - if (f->src && strlen(f->src)) - len += strlen(f->src) + 1; + if (f->src) + srclen = strlen(f->src); + if (srclen > 0) + len += srclen + 1; buf = malloc(len); if (!buf) return NULL; @@ -303,7 +305,7 @@ struct ast_frame *ast_frdup(struct ast_frame *f) out->mallocd = AST_MALLOCD_HDR; out->offset = AST_FRIENDLY_OFFSET; out->data = buf + sizeof(struct ast_frame) + AST_FRIENDLY_OFFSET; - if (f->src && strlen(f->src)) { + if (srclen > 0) { out->src = out->data + f->datalen; /* Must have space since we allocated for it */ strcpy(out->src, f->src); -- GitLab