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) static inline void eatbytes(termkey_t *tk, size_t count)
{ {
tk->buffstart += count; if(count >= tk->buffcount) {
tk->buffcount -= count;
if(tk->buffcount <= 0) {
tk->buffstart = 0; tk->buffstart = 0;
tk->buffcount = 0; tk->buffcount = 0;
return;
} }
tk->buffstart += count;
tk->buffcount -= count;
size_t halfsize = tk->buffsize / 2; size_t halfsize = tk->buffsize / 2;
if(tk->buffstart > halfsize) { if(tk->buffstart > halfsize) {