From 53b0d0aca9d87361f6add5c1ff8380b8101ffceb Mon Sep 17 00:00:00 2001 From: Paul LeoNerd Evans Date: Sun, 10 Feb 2008 20:24:25 +0000 Subject: More robust eatbytes() that guards against the buffer going negative, because size_t is not signed --- termkey.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/termkey.c b/termkey.c index 819b49f..644629f 100644 --- a/termkey.c +++ b/termkey.c @@ -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) { -- cgit v1.2.3-70-g09d2