From 79b9bc6a2f169f7717d6ae301ff7cdd661ecfc28 Mon Sep 17 00:00:00 2001 From: Steve Murphy Date: Thu, 2 Aug 2007 18:32:34 +0000 Subject: [PATCH] Merged revisions 77945 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.4 ................ r77945 | murf | 2007-08-02 12:21:40 -0600 (Thu, 02 Aug 2007) | 9 lines Merged revisions 77942 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r77942 | murf | 2007-08-02 11:56:37 -0600 (Thu, 02 Aug 2007) | 1 line This patch hopefully solves 10141; The user is running with it, and it doesn't appear to harm asterisk's operation, and may prevent a crash. I'll store it in 1.2, as we have shut down support on 1.2, but since I developed the patch before support finished, and it might affect 1.4 and trunk, I'm going ahead with it. ........ ................ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@77946 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/fskmodem.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/main/fskmodem.c b/main/fskmodem.c index cd48d484ea..f773009798 100644 --- a/main/fskmodem.c +++ b/main/fskmodem.c @@ -225,7 +225,9 @@ int fsk_serial(fsk_data *fskd, short *buffer, int *len, int *outbyte) int i,j,n1,r; int samples = 0; int olen; - + int beginlen=*len; + int beginlenx; + switch (fskd->state) { /* Pick up where we left off */ case STATE_SEARCH_STARTBIT2: @@ -253,12 +255,13 @@ int fsk_serial(fsk_data *fskd, short *buffer, int *len, int *outbyte) beginning of a start bit in the TDD sceanario. It just looks for sufficient level to maybe, perhaps, guess, maybe that its maybe the beginning of a start bit, perhaps. This whole thing stinks! */ + beginlenx=beginlen; /* just to avoid unused war warnings */ if (demodulator(fskd, &fskd->x1, GET_SAMPLE)) return -1; samples++; for (;;) { search_startbit2: - if (!*len) { + if (*len <= 0) { fskd->state = STATE_SEARCH_STARTBIT2; return 0; } @@ -278,7 +281,7 @@ search_startbit3: fskd->state = STATE_SEARCH_STARTBIT3; return 0; } - for (; i; i--) { + for (; i>0; i--) { if (demodulator(fskd, &fskd->x1, GET_SAMPLE)) return(-1); #if 0