diff options
author | russell <russell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-11-02 14:07:48 +0000 |
---|---|---|
committer | russell <russell@f38db490-d61c-443f-a65b-d21fe96a405b> | 2006-11-02 14:07:48 +0000 |
commit | ee3dff34421d07513deaf3a4a0470a0c7addafee (patch) | |
tree | 1d181b51b4a0bfbd1cf8577f96b65940ed996d91 /main/callerid.c | |
parent | 792bde792cf5030015a46f720fd66e338e9e665a (diff) |
Change the buffer used in callerid_feed() and callerid_feed_jp() to be
allocated on the stack using alloca() instead of using malloc() since
they are only used locally to these functions.
git-svn-id: http://svn.digium.com/svn/asterisk/trunk@46885 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/callerid.c')
-rw-r--r-- | main/callerid.c | 22 |
1 files changed, 5 insertions, 17 deletions
diff --git a/main/callerid.c b/main/callerid.c index 6bb916bf4..036535dec 100644 --- a/main/callerid.c +++ b/main/callerid.c @@ -286,13 +286,9 @@ int callerid_feed_jp(struct callerid_state *cid, unsigned char *ubuf, int len, i int res; int x; short *buf; - short *obuf; - if (!(buf = ast_calloc(1, 2 * len + cid->oldlen))) { - return -1; - } + buf = alloca(2 * len + cid->oldlen); - obuf = buf; memcpy(buf, cid->oldstuff, cid->oldlen); mylen += cid->oldlen/2; @@ -300,7 +296,7 @@ int callerid_feed_jp(struct callerid_state *cid, unsigned char *ubuf, int len, i buf[x+cid->oldlen/2] = AST_XLAW(ubuf[x]); while (mylen >= 160) { - b = b2 = 0 ; + b = b2 = 0; olen = mylen; res = fsk_serie(&cid->fskd, buf, &mylen, &b); @@ -527,7 +523,7 @@ int callerid_feed_jp(struct callerid_state *cid, unsigned char *ubuf, int len, i cid->oldlen = mylen * 2; } else cid->oldlen = 0; - free(obuf); + return 0; } @@ -540,24 +536,19 @@ int callerid_feed(struct callerid_state *cid, unsigned char *ubuf, int len, int int res; int x; short *buf; - short *obuf; - if (!(buf = ast_calloc(1, 2 * len + cid->oldlen))) { - return -1; - } + buf = alloca(2 * len + cid->oldlen); - obuf = buf; memcpy(buf, cid->oldstuff, cid->oldlen); mylen += cid->oldlen/2; for (x=0;x<len;x++) buf[x+cid->oldlen/2] = AST_XLAW(ubuf[x]); - while(mylen >= 160) { + while (mylen >= 160) { olen = mylen; res = fsk_serie(&cid->fskd, buf, &mylen, &b); if (mylen < 0) { ast_log(LOG_ERROR, "fsk_serie made mylen < 0 (%d)\n", mylen); - free(obuf); return -1; } buf += (olen - mylen); @@ -591,7 +582,6 @@ int callerid_feed(struct callerid_state *cid, unsigned char *ubuf, int len, int case 4: /* Retrieve message */ if (cid->pos >= 128) { ast_log(LOG_WARNING, "Caller ID too long???\n"); - free(obuf); return -1; } cid->rawdata[cid->pos++] = b; @@ -677,7 +667,6 @@ int callerid_feed(struct callerid_state *cid, unsigned char *ubuf, int len, int strcpy(cid->name, ""); cid->flags |= CID_UNKNOWN_NAME; } - free(obuf); return 1; break; default: @@ -690,7 +679,6 @@ int callerid_feed(struct callerid_state *cid, unsigned char *ubuf, int len, int cid->oldlen = mylen * 2; } else cid->oldlen = 0; - free(obuf); return 0; } |