Author: gtjoseph Date: Mon Apr 6 13:58:30 2015 New Revision: 434113 URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=434113 Log: 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 Modified: branches/11/channels/chan_sip.c branches/11/include/asterisk/inline_api.h branches/11/main/ccss.c branches/11/main/dsp.c branches/11/main/manager.c Modified: branches/11/channels/chan_sip.c URL: http://svnview.digium.com/svn/asterisk/branches/11/channels/chan_sip.c?view=diff&rev=434113&r1=434112&r2=434113 ============================================================================== --- branches/11/channels/chan_sip.c (original) +++ branches/11/channels/chan_sip.c Mon Apr 6 13:58:30 2015 @@ -9459,7 +9459,8 @@ { char *c = ast_str_buffer(req->data); 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; ptrdiff_t current_header_offset = 0; char *previous_header = ""; Modified: branches/11/include/asterisk/inline_api.h URL: http://svnview.digium.com/svn/asterisk/branches/11/include/asterisk/inline_api.h?view=diff&rev=434113&r1=434112&r2=434113 ============================================================================== --- branches/11/include/asterisk/inline_api.h (original) +++ branches/11/include/asterisk/inline_api.h Mon Apr 6 13:58:30 2015 @@ -48,7 +48,7 @@ #if !defined(LOW_MEMORY) #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 #else /* if defined(__clang__) */ #define AST_INLINE_API(hdr, body) hdr; extern inline hdr body Modified: branches/11/main/ccss.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/ccss.c?view=diff&rev=434113&r1=434112&r2=434113 ============================================================================== --- branches/11/main/ccss.c (original) +++ branches/11/main/ccss.c Mon Apr 6 13:58:30 2015 @@ -813,7 +813,7 @@ return 0; } - if (!sscanf(value, "%30u", &value_as_uint) == 1) { + if (sscanf(value, "%30u", &value_as_uint) != 1) { return -1; } Modified: branches/11/main/dsp.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/dsp.c?view=diff&rev=434113&r1=434112&r2=434113 ============================================================================== --- branches/11/main/dsp.c (original) +++ branches/11/main/dsp.c Mon Apr 6 13:58:30 2015 @@ -102,9 +102,11 @@ { "uk", PROG_MODE_UK }, }; +#define FREQ_ARRAY_SIZE 7 + static struct progress { enum gsamp_size size; - int freqs[7]; + int freqs[FREQ_ARRAY_SIZE]; } modes[] = { { GSAMP_SIZE_NA, { 350, 440, 480, 620, 950, 1400, 1800 } }, /*!< North America */ { GSAMP_SIZE_CR, { 425 } }, /*!< Costa Rica, Brazil */ @@ -381,7 +383,7 @@ struct ast_dsp_busy_pattern busy_cadence; int historicnoise[DSP_HISTORY]; int historicsilence[DSP_HISTORY]; - goertzel_state_t freqs[7]; + goertzel_state_t freqs[FREQ_ARRAY_SIZE]; int freqcount; int gsamps; enum gsamp_size gsamp_size; @@ -1026,6 +1028,8 @@ int pass; int newstate = DSP_TONE_STATE_SILENCE; int res = 0; + int freqcount = dsp->freqcount > FREQ_ARRAY_SIZE ? FREQ_ARRAY_SIZE : dsp->freqcount; + while (len) { /* Take the lesser of the number of samples we need and what we have */ pass = len; @@ -1033,7 +1037,7 @@ pass = dsp->gsamp_size - dsp->gsamps; } for (x = 0; x < pass; x++) { - for (y = 0; y < dsp->freqcount; y++) { + for (y = 0; y < freqcount; y++) { goertzel_sample(&dsp->freqs[y], s[x]); } dsp->genergy += s[x] * s[x]; @@ -1042,8 +1046,8 @@ dsp->gsamps += pass; len -= pass; if (dsp->gsamps == dsp->gsamp_size) { - float hz[7]; - for (y = 0; y < 7; y++) { + float hz[FREQ_ARRAY_SIZE]; + for (y = 0; y < FREQ_ARRAY_SIZE; y++) { hz[y] = goertzel_result(&dsp->freqs[y]); } switch (dsp->progmode) { @@ -1642,7 +1646,7 @@ dsp->gsamp_size = modes[dsp->progmode].size; 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]) { goertzel_init(&dsp->freqs[x], (float)modes[dsp->progmode].freqs[x], dsp->gsamp_size, dsp->sample_rate); max = x + 1; @@ -1668,6 +1672,7 @@ dsp->digitmode = DSP_DIGITMODE_DTMF; dsp->faxmode = DSP_FAXMODE_DETECT_CNG; dsp->sample_rate = sample_rate; + dsp->freqcount = 0; /* Initialize digit detector */ ast_digit_detect_init(&dsp->digit_state, dsp->digitmode & DSP_DIGITMODE_MF, dsp->sample_rate); dsp->display_inband_dtmf_warning = 1; Modified: branches/11/main/manager.c URL: http://svnview.digium.com/svn/asterisk/branches/11/main/manager.c?view=diff&rev=434113&r1=434112&r2=434113 ============================================================================== --- branches/11/main/manager.c (original) +++ branches/11/main/manager.c Mon Apr 6 13:58:30 2015 @@ -3974,7 +3974,7 @@ static int check_blacklist(const char *cmd) { char *cmd_copy, *cur_cmd; - char *cmd_words[MAX_BLACKLIST_CMD_LEN] = { NULL, }; + char *cmd_words[AST_MAX_CMD_LEN] = { NULL, }; int i; cmd_copy = ast_strdupa(cmd); -- _____________________________________________________________________ -- Bandwidth and Colocation Provided by http://www.api-digital.com -- svn-commits mailing list To UNSUBSCRIBE or update options visit: http://lists.digium.com/mailman/listinfo/svn-commits