The number of bytes read by read is returned in a ssize_t so that errors can be propogated through the return code. Previously we were storing this return value in an unsigned size_t and then checking this value against if (size < 0) (Which can never be true)
Simple fix here is to change the size storage to a signed ssize_t Now that the size is signed, the parameter passed to LayProcess should be unsigned, so we cast there instead. It's more important to keep the read calls using a signed value here. Signed-off-by: Kieran Bingham <kieranbing...@gmail.com> --- src/display.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/display.c b/src/display.c index f8f6bea..db7b0d5 100644 --- a/src/display.c +++ b/src/display.c @@ -2502,7 +2502,7 @@ static void disp_writeev_fn(Event *event, void *data) static void disp_readev_fn(Event *event, void *data) { - size_t size; + ssize_t size; char buf[IOSIZE]; Canvas *cv; @@ -2566,7 +2566,7 @@ static void disp_readev_fn(Event *event, void *data) flayer = &p->w_layer; bufp = buf; while (size > 0) - LayProcess(&bufp, &size); + LayProcess(&bufp, (size_t*)&size); return; } zmodem_abort(0, display); -- 2.1.4