From: James Golovich Date: Wed, 28 Apr 2004 17:54:01 +0000 (+0000) Subject: ast_frdup optimization: only call strlen once and save the result X-Git-Tag: 1.0.0-rc1~642 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ceb572a2808d82bf43cacd82417c033cd4f40728;p=thirdparty%2Fasterisk.git 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 --- 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);