diff --git a/libs/libteletone/libteletone.2008.vcproj b/libs/libteletone/libteletone.2008.vcproj
index c475c0d450..05a499cd25 100644
--- a/libs/libteletone/libteletone.2008.vcproj
+++ b/libs/libteletone/libteletone.2008.vcproj
@@ -50,6 +50,7 @@
WarningLevel="4"
WarnAsError="true"
DebugInformationFormat="4"
+ EnablePREfast="true"
/>
= 1400) // VC8+
+#define teletone_assert(expr) assert(expr);__analysis_assume( expr )
+#else
+#define teletone_assert(expr) assert(expr)
+#endif
+
#include
#include
diff --git a/libs/libteletone/src/libteletone_detect.c b/libs/libteletone/src/libteletone_detect.c
index 7bbdd697df..55cfcf60cd 100644
--- a/libs/libteletone/src/libteletone_detect.c
+++ b/libs/libteletone/src/libteletone_detect.c
@@ -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;
}
diff --git a/libs/libteletone/src/libteletone_generate.c b/libs/libteletone/src/libteletone_generate.c
index fdf4dd14f7..7771188c46 100644
--- a/libs/libteletone/src/libteletone_generate.c
+++ b/libs/libteletone/src/libteletone_generate.c
@@ -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;