jitterbuf: Fix memory leak on jitter buffer reset

(issue ASTERISK-22467)
Reported by: Corey Farrell
Patches:
    jitterbuf-jb_reset-leak-1.8.patch
    jitterbuf-jb_reset-leak-11up.patch
........

Merged revisions 401786 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 401787 from http://svn.asterisk.org/svn/asterisk/branches/11


git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@401788 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Jonathan Rose
2013-10-24 19:41:49 +00:00
parent 8f5bad357b
commit 09bea85f3d

View File

@@ -73,10 +73,12 @@ static void decrement_losspct(jitterbuf *jb)
void jb_reset(jitterbuf *jb) void jb_reset(jitterbuf *jb)
{ {
/* only save settings */ /* only save settings and free list */
jb_conf s = jb->info.conf; jb_conf s = jb->info.conf;
jb_frame *fr = jb->free;
memset(jb, 0, sizeof(*jb)); memset(jb, 0, sizeof(*jb));
jb->info.conf = s; jb->info.conf = s;
jb->free = fr;
/* initialize length, using the default value */ /* initialize length, using the default value */
jb->info.current = jb->info.target = jb->info.conf.target_extra = JB_TARGET_EXTRA; jb->info.current = jb->info.target = jb->info.conf.target_extra = JB_TARGET_EXTRA;
@@ -87,7 +89,7 @@ jitterbuf * jb_new()
{ {
jitterbuf *jb; jitterbuf *jb;
if (!(jb = ast_malloc(sizeof(*jb)))) if (!(jb = ast_calloc(1, sizeof(*jb))))
return NULL; return NULL;
jb_reset(jb); jb_reset(jb);