]> git.neil.brown.name Git - gsm0710muxd.git/commitdiff
Fixed a bug with a 2048-sized transfer from modem 0.9.2.1
authorPaul Fertser <fercerpav@gmail.com>
Thu, 4 Dec 2008 17:27:39 +0000 (20:27 +0300)
committerMichael 'Mickey' Lauer <mickey@vanille-media.de>
Thu, 4 Dec 2008 23:30:53 +0000 (00:30 +0100)
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.

src/gsm0710muxd.c

index bb49d733bc5dccc6088f3aaafff876686e70f811..0b9e7ad4870e49b5b1be43d473f0cf7c38001b7f 100644 (file)
@@ -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) };