[svn-commits] rmudgett: trunk r312023 - in /trunk: ./ channels/chan_misdn.c
SVN commits to the Digium repositories
svn-commits at lists.digium.com
Thu Mar 31 15:12:39 CDT 2011
Author: rmudgett
Date: Thu Mar 31 15:12:34 2011
New Revision: 312023
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=312023
Log:
Merged revisions 312022 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.8
........
r312022 | rmudgett | 2011-03-31 15:11:40 -0500 (Thu, 31 Mar 2011) | 14 lines
chan_misdn segfaults when DEBUG_THREADS is enabled.
The segfault happens because jb->mutexjb is uninitialized from the
ast_malloc(). The internals of ast_mutex_init() were assuming a nonzero
value meant mutex tracking initialization had already happened. Recent
changes to mutex tracking code to reduce excessive memory consumption
exposed this uninitialized value.
Converted misdn_jb_init() to use ast_calloc() instead of ast_malloc().
Also eliminated redundant zero initialization code in the routine.
(closes issue #18975)
Reported by: irroot
........
Modified:
trunk/ (props changed)
trunk/channels/chan_misdn.c
Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-1.8-merged' - no diff available.
Modified: trunk/channels/chan_misdn.c
URL: http://svnview.digium.com/svn/asterisk/trunk/channels/chan_misdn.c?view=diff&rev=312023&r1=312022&r2=312023
==============================================================================
--- trunk/channels/chan_misdn.c (original)
+++ trunk/channels/chan_misdn.c Thu Mar 31 15:12:34 2011
@@ -12453,38 +12453,33 @@
/* allocates the jb-structure and initialize the elements*/
struct misdn_jb *misdn_jb_init(int size, int upper_threshold)
{
- int i;
struct misdn_jb *jb;
- jb = ast_malloc(sizeof(*jb));
+ jb = ast_calloc(1, sizeof(*jb));
if (!jb) {
chan_misdn_log(-1, 0, "No free Mem for jb\n");
return NULL;
}
jb->size = size;
jb->upper_threshold = upper_threshold;
- jb->wp = 0;
- jb->rp = 0;
- jb->state_full = 0;
- jb->state_empty = 0;
- jb->bytes_wrote = 0;
- jb->samples = ast_malloc(size * sizeof(char));
+ //jb->wp = 0;
+ //jb->rp = 0;
+ //jb->state_full = 0;
+ //jb->state_empty = 0;
+ //jb->bytes_wrote = 0;
+ jb->samples = ast_calloc(size, sizeof(*jb->samples));
if (!jb->samples) {
ast_free(jb);
chan_misdn_log(-1, 0, "No free Mem for jb->samples\n");
return NULL;
}
- jb->ok = ast_malloc(size * sizeof(char));
+ jb->ok = ast_calloc(size, sizeof(*jb->ok));
if (!jb->ok) {
ast_free(jb->samples);
ast_free(jb);
chan_misdn_log(-1, 0, "No free Mem for jb->ok\n");
return NULL;
- }
-
- for (i = 0; i < size; i++) {
- jb->ok[i] = 0;
}
ast_mutex_init(&jb->mutexjb);
More information about the svn-commits
mailing list