mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-06 21:09:47 +00:00
build: Fixes for gcc 5 compilation
These are fixes for compilation under gcc 5.0... chan_sip.c: In parse_request needed to make 'lim' unsigned. inline_api.h: Needed to add a check for '__GNUC_STDC_INLINE__' to detect C99 inline semantics (same as clang). ccss.c: In ast_cc_set_parm, needed to fix weird comparison. dsp.c: Needed to work around a possible compiler bug. It was throwing an array-bounds error but neither sgriepentrog, rmudgett nor I could figure out why. manager.c: In action_atxfer, needed to correct an array allocation. This patch will go to 11, 13, trunk. Review: https://reviewboard.asterisk.org/r/4581/ Reported-by: Jeffrey Ollie Tested-by: George Joseph ASTERISK-24932 #close ........ Merged revisions 434113 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@434114 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -9595,7 +9595,8 @@ static int parse_request(struct sip_request *req)
|
|||||||
{
|
{
|
||||||
char *c = ast_str_buffer(req->data);
|
char *c = ast_str_buffer(req->data);
|
||||||
ptrdiff_t *dst = req->header;
|
ptrdiff_t *dst = req->header;
|
||||||
int i = 0, lim = SIP_MAX_HEADERS - 1;
|
int i = 0;
|
||||||
|
unsigned int lim = SIP_MAX_HEADERS - 1;
|
||||||
unsigned int skipping_headers = 0;
|
unsigned int skipping_headers = 0;
|
||||||
ptrdiff_t current_header_offset = 0;
|
ptrdiff_t current_header_offset = 0;
|
||||||
char *previous_header = "";
|
char *previous_header = "";
|
||||||
|
@@ -48,7 +48,7 @@
|
|||||||
#if !defined(LOW_MEMORY) && !defined(DISABLE_INLINE)
|
#if !defined(LOW_MEMORY) && !defined(DISABLE_INLINE)
|
||||||
|
|
||||||
#if !defined(AST_API_MODULE)
|
#if !defined(AST_API_MODULE)
|
||||||
#if defined(__clang__)
|
#if defined(__clang__) || defined(__GNUC_STDC_INLINE__)
|
||||||
#define AST_INLINE_API(hdr, body) static hdr; static inline hdr body
|
#define AST_INLINE_API(hdr, body) static hdr; static inline hdr body
|
||||||
#else /* if defined(__clang__) */
|
#else /* if defined(__clang__) */
|
||||||
#define AST_INLINE_API(hdr, body) hdr; extern inline hdr body
|
#define AST_INLINE_API(hdr, body) hdr; extern inline hdr body
|
||||||
|
@@ -825,7 +825,7 @@ int ast_cc_set_param(struct ast_cc_config_params *params, const char * const nam
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!sscanf(value, "%30u", &value_as_uint) == 1) {
|
if (sscanf(value, "%30u", &value_as_uint) != 1) {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
17
main/dsp.c
17
main/dsp.c
@@ -112,9 +112,11 @@ static struct progalias {
|
|||||||
{ "uk", PROG_MODE_UK },
|
{ "uk", PROG_MODE_UK },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define FREQ_ARRAY_SIZE 7
|
||||||
|
|
||||||
static struct progress {
|
static struct progress {
|
||||||
enum gsamp_size size;
|
enum gsamp_size size;
|
||||||
int freqs[7];
|
int freqs[FREQ_ARRAY_SIZE];
|
||||||
} modes[] = {
|
} modes[] = {
|
||||||
{ GSAMP_SIZE_NA, { 350, 440, 480, 620, 950, 1400, 1800 } }, /*!< North America */
|
{ GSAMP_SIZE_NA, { 350, 440, 480, 620, 950, 1400, 1800 } }, /*!< North America */
|
||||||
{ GSAMP_SIZE_CR, { 425 } }, /*!< Costa Rica, Brazil */
|
{ GSAMP_SIZE_CR, { 425 } }, /*!< Costa Rica, Brazil */
|
||||||
@@ -389,7 +391,7 @@ struct ast_dsp {
|
|||||||
struct ast_dsp_busy_pattern busy_cadence;
|
struct ast_dsp_busy_pattern busy_cadence;
|
||||||
int historicnoise[DSP_HISTORY];
|
int historicnoise[DSP_HISTORY];
|
||||||
int historicsilence[DSP_HISTORY];
|
int historicsilence[DSP_HISTORY];
|
||||||
goertzel_state_t freqs[7];
|
goertzel_state_t freqs[FREQ_ARRAY_SIZE];
|
||||||
int freqcount;
|
int freqcount;
|
||||||
int gsamps;
|
int gsamps;
|
||||||
enum gsamp_size gsamp_size;
|
enum gsamp_size gsamp_size;
|
||||||
@@ -1036,6 +1038,8 @@ static int __ast_dsp_call_progress(struct ast_dsp *dsp, short *s, int len)
|
|||||||
int pass;
|
int pass;
|
||||||
int newstate = DSP_TONE_STATE_SILENCE;
|
int newstate = DSP_TONE_STATE_SILENCE;
|
||||||
int res = 0;
|
int res = 0;
|
||||||
|
int freqcount = dsp->freqcount > FREQ_ARRAY_SIZE ? FREQ_ARRAY_SIZE : dsp->freqcount;
|
||||||
|
|
||||||
while (len) {
|
while (len) {
|
||||||
/* Take the lesser of the number of samples we need and what we have */
|
/* Take the lesser of the number of samples we need and what we have */
|
||||||
pass = len;
|
pass = len;
|
||||||
@@ -1045,7 +1049,7 @@ static int __ast_dsp_call_progress(struct ast_dsp *dsp, short *s, int len)
|
|||||||
for (x = 0; x < pass; x++) {
|
for (x = 0; x < pass; x++) {
|
||||||
samp = s[x];
|
samp = s[x];
|
||||||
dsp->genergy += (int32_t) samp * (int32_t) samp;
|
dsp->genergy += (int32_t) samp * (int32_t) samp;
|
||||||
for (y = 0; y < dsp->freqcount; y++) {
|
for (y = 0; y < freqcount; y++) {
|
||||||
goertzel_sample(&dsp->freqs[y], samp);
|
goertzel_sample(&dsp->freqs[y], samp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1053,8 +1057,8 @@ static int __ast_dsp_call_progress(struct ast_dsp *dsp, short *s, int len)
|
|||||||
dsp->gsamps += pass;
|
dsp->gsamps += pass;
|
||||||
len -= pass;
|
len -= pass;
|
||||||
if (dsp->gsamps == dsp->gsamp_size) {
|
if (dsp->gsamps == dsp->gsamp_size) {
|
||||||
float hz[7];
|
float hz[FREQ_ARRAY_SIZE];
|
||||||
for (y = 0; y < 7; y++) {
|
for (y = 0; y < FREQ_ARRAY_SIZE; y++) {
|
||||||
hz[y] = goertzel_result(&dsp->freqs[y]);
|
hz[y] = goertzel_result(&dsp->freqs[y]);
|
||||||
}
|
}
|
||||||
switch (dsp->progmode) {
|
switch (dsp->progmode) {
|
||||||
@@ -1642,7 +1646,7 @@ static void ast_dsp_prog_reset(struct ast_dsp *dsp)
|
|||||||
|
|
||||||
dsp->gsamp_size = modes[dsp->progmode].size;
|
dsp->gsamp_size = modes[dsp->progmode].size;
|
||||||
dsp->gsamps = 0;
|
dsp->gsamps = 0;
|
||||||
for (x = 0; x < ARRAY_LEN(modes[dsp->progmode].freqs); x++) {
|
for (x = 0; x < FREQ_ARRAY_SIZE; x++) {
|
||||||
if (modes[dsp->progmode].freqs[x]) {
|
if (modes[dsp->progmode].freqs[x]) {
|
||||||
goertzel_init(&dsp->freqs[x], (float)modes[dsp->progmode].freqs[x], dsp->sample_rate);
|
goertzel_init(&dsp->freqs[x], (float)modes[dsp->progmode].freqs[x], dsp->sample_rate);
|
||||||
max = x + 1;
|
max = x + 1;
|
||||||
@@ -1668,6 +1672,7 @@ static struct ast_dsp *__ast_dsp_new(unsigned int sample_rate)
|
|||||||
dsp->digitmode = DSP_DIGITMODE_DTMF;
|
dsp->digitmode = DSP_DIGITMODE_DTMF;
|
||||||
dsp->faxmode = DSP_FAXMODE_DETECT_CNG;
|
dsp->faxmode = DSP_FAXMODE_DETECT_CNG;
|
||||||
dsp->sample_rate = sample_rate;
|
dsp->sample_rate = sample_rate;
|
||||||
|
dsp->freqcount = 0;
|
||||||
/* Initialize digit detector */
|
/* Initialize digit detector */
|
||||||
ast_digit_detect_init(&dsp->digit_state, dsp->digitmode & DSP_DIGITMODE_MF, dsp->sample_rate);
|
ast_digit_detect_init(&dsp->digit_state, dsp->digitmode & DSP_DIGITMODE_MF, dsp->sample_rate);
|
||||||
dsp->display_inband_dtmf_warning = 1;
|
dsp->display_inband_dtmf_warning = 1;
|
||||||
|
@@ -4785,7 +4785,7 @@ static int action_atxfer(struct mansession *s, const struct message *m)
|
|||||||
static int check_blacklist(const char *cmd)
|
static int check_blacklist(const char *cmd)
|
||||||
{
|
{
|
||||||
char *cmd_copy, *cur_cmd;
|
char *cmd_copy, *cur_cmd;
|
||||||
char *cmd_words[MAX_BLACKLIST_CMD_LEN] = { NULL, };
|
char *cmd_words[AST_MAX_CMD_LEN] = { NULL, };
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
cmd_copy = ast_strdupa(cmd);
|
cmd_copy = ast_strdupa(cmd);
|
||||||
|
Reference in New Issue
Block a user