]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
code analysis and fixes for teletone.
authorMichael Jerris <mike@jerris.com>
Thu, 14 Feb 2008 18:13:50 +0000 (18:13 +0000)
committerMichael Jerris <mike@jerris.com>
Thu, 14 Feb 2008 18:13:50 +0000 (18:13 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@7614 d0543943-73ff-0310-b7d9-9358b9ac24b2

libs/libteletone/libteletone.2008.vcproj
libs/libteletone/src/libteletone.h
libs/libteletone/src/libteletone_detect.c
libs/libteletone/src/libteletone_generate.c

index c475c0d450acce60cf79bc1df6eaa72e60f89f28..05a499cd251cc6691b1408dc7444c20aed9b4b9c 100644 (file)
@@ -50,6 +50,7 @@
                                WarningLevel="4"\r
                                WarnAsError="true"\r
                                DebugInformationFormat="4"\r
+                               EnablePREfast="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
                                WarningLevel="4"\r
                                WarnAsError="true"\r
                                DebugInformationFormat="3"\r
+                               EnablePREfast="true"\r
                        />\r
                        <Tool\r
                                Name="VCManagedResourceCompilerTool"\r
index d7aea1791617d290e89510926db26286d140ea42..db6accb97e4adb827614649f0d09a594a0010852 100644 (file)
@@ -104,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;