diff --git a/ttynvt.c b/ttynvt.c index 260cb53..025158f 100644 --- a/ttynvt.c +++ b/ttynvt.c @@ -407,10 +407,17 @@ ttynvt_read(fuse_req_t req, size_t size, off_t off, } if (size > tty->rxcnt) size = tty->rxcnt; - fuse_reply_buf(req, tty->buf, size); - memmove(tty->buf, tty->buf + size, tty->blen - size); - tty->blen -= size; - tty->rxcnt -= size; + if (size > 0) + { + fuse_reply_buf(req, tty->buf, size); + memmove(tty->buf, tty->buf + size, tty->blen - size); + tty->blen -= size; + tty->rxcnt -= size; + } + else + { + fuse_reply_err(req, EINTR); + } pthread_mutex_unlock(&tty->tty_lock); }