From: Paul Fertser Date: Thu, 4 Dec 2008 17:27:39 +0000 (+0300) Subject: Fixed a bug with a 2048-sized transfer from modem X-Git-Tag: 0.9.2.1^0 X-Git-Url: http://git.neil.brown.name/?a=commitdiff_plain;h=2edaa892361dab3001e9f2485bdd478298abbed3;p=gsm0710muxd.git Fixed a bug with a 2048-sized transfer from modem As the circular buffer is used to hold the incoming data from the modem, its free size must be one byte less than is actually available or we'll get readp == writep and the buffer will be considered empty. --- diff --git a/src/gsm0710muxd.c b/src/gsm0710muxd.c index bb49d73..0b9e7ad 100644 --- a/src/gsm0710muxd.c +++ b/src/gsm0710muxd.c @@ -194,7 +194,7 @@ typedef struct Serial * tells how much free space there is in the buffer */ //int gsm0710_buffer_free(GSM0710_Buffer *buf); -#define gsm0710_buffer_free(buf) ((buf->readp > buf->writep) ? (buf->readp - buf->writep) : (GSM0710_BUFFER_SIZE - (buf->writep-buf->readp))) +#define gsm0710_buffer_free(buf) ((buf->readp > buf->writep) ? (buf->readp - buf->writep) : (GSM0710_BUFFER_SIZE - (buf->writep-buf->readp)) - 1) ////////////////////////////////// constants & globals static unsigned char close_channel_cmd[] = { GSM0710_CONTROL_CLD | GSM0710_CR, GSM0710_EA | (0 << 1) };