More robust eatbytes() that guards against the buffer going negative, because size_t is not signed

This commit is contained in:
Paul LeoNerd Evans 2008-02-10 20:24:25 +00:00
parent 31414eac3b
commit 53b0d0aca9
1 changed files with 5 additions and 4 deletions

View File

@ -188,14 +188,15 @@ int termkey_getwaittime(termkey_t *tk)
static inline void eatbytes(termkey_t *tk, size_t count)
{
tk->buffstart += count;
tk->buffcount -= count;
if(tk->buffcount <= 0) {
if(count >= tk->buffcount) {
tk->buffstart = 0;
tk->buffcount = 0;
return;
}
tk->buffstart += count;
tk->buffcount -= count;
size_t halfsize = tk->buffsize / 2;
if(tk->buffstart > halfsize) {