Commit d627c8d7a179684fed0ce0e34684fa4e2f9a8806
authorAnthony Morel <anthonym@bsiuk.com>
Thu, 18 Sep 2014 18:39:53 +0000 (19:39 +0100)
committerAnthony Morel <anthonym@bsiuk.com>
Thu, 18 Sep 2014 18:39:53 +0000 (19:39 +0100)
treeb87131dcc79566fa3fcd586db475921d7046561b
parenta0f2f927ea96cc951d2cf4e54f16059d9271f53f
Message:
fifo: prevent potential misuse of _get_write_size()

Using the number obtained from _get_write_size() and writing that many
items to the fifo yields to _isempty() becoming true and not to
_isfull() becoming true.

I got caught assuming the latter.

To avoid thinking about edge cases and prevent potential misuse of
_get_write_size(), I suggest that it returns one unit less, thus, a
number between 0 and (fifo_size-1).  E.g., if there is only one place
left in the fifo, i.e., _isfull() is true, it then returns 0, preventing
us to fill that place and get into a wrap overflow situation.

(Michel: Thanks for the great architecture you laid out and the great
code.)
simavr/sim/fifo_declare.h