]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
sync w/ libteletone changes from main repo
authorMichael Jerris <mike@jerris.com>
Thu, 14 Feb 2008 18:17:02 +0000 (18:17 +0000)
committerMichael Jerris <mike@jerris.com>
Thu, 14 Feb 2008 18:17:02 +0000 (18:17 +0000)
git-svn-id: http://svn.openzap.org/svn/openzap/trunk@394 a93c3328-9c30-0410-af19-c9cd2b2d52af

libs/freetdm/src/include/libteletone.h
libs/freetdm/src/libteletone_detect.c
libs/freetdm/src/libteletone_generate.c

index aaf7b0ed4794c4ab9eefb9b5ca53fdd0377b08f4..db6accb97e4adb827614649f0d09a594a0010852 100644 (file)
@@ -74,6 +74,9 @@
 #ifdef __cplusplus
 extern "C" {
 #endif
+
+#include <math.h>
+
 #define        TELETONE_MAX_DTMF_DIGITS 128
 #define TELETONE_MAX_TONES 6
 #define TELETONE_TONE_RANGE 127
@@ -101,6 +104,12 @@ typedef struct {
 typedef __int16 int16_t;
 #endif
 
+#if (_MSC_VER >= 1400)                 // VC8+
+#define teletone_assert(expr) assert(expr);__analysis_assume( expr )
+#else
+#define teletone_assert(expr) assert(expr)
+#endif
+
 #include <libteletone_generate.h>
 #include <libteletone_detect.h>
 
index 7bbdd697dfa0f75a355c22775ea92d8c86964784..55cfcf60cdb4248aac16a6691012d30d760af1b0 100644 (file)
@@ -432,6 +432,8 @@ int teletone_dtmf_get (teletone_dtmf_detect_state_t *dtmf_detect_state,
                                           char *buf,
                                           int max)
 {
+       teletone_assert(dtmf_detect_state->current_digits <= TELETONE_MAX_DTMF_DIGITS);
+
        if (max > dtmf_detect_state->current_digits) {
                max = dtmf_detect_state->current_digits;
        }
index fdf4dd14f7365ae7b76e2584e191509112d015ef..7771188c466f237621afba323a83d2aa125db08e 100644 (file)
@@ -191,10 +191,13 @@ static int ensure_buffer(teletone_generation_session_t *ts, int need)
        need *= ts->channels;
 
        if (need > ts->datalen) {
+               teletone_audio_t *tmp;
                ts->datalen = need + ts->dynamic;
-               if (!(ts->buffer = realloc(ts->buffer, ts->datalen))) {
+               tmp = realloc(ts->buffer, ts->datalen);
+               if (!tmp) {
                        return -1;
                }
+               ts->buffer = tmp;
        }
 
        return 0;