From f2f6aadb3d820d3050f02f1dfec9bfc1ec0502db Mon Sep 17 00:00:00 2001 From: Alex Shinn Date: Thu, 29 Jun 2017 14:17:34 +0900 Subject: [PATCH] fixing sexp_port_size after buffered read on non-custom ports --- sexp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sexp.c b/sexp.c index 1c485fd9..202832f0 100644 --- a/sexp.c +++ b/sexp.c @@ -1352,7 +1352,7 @@ int sexp_buffered_read_char (sexp ctx, sexp p) { res = fread(sexp_port_buf(p) + BUF_START, 1, SEXP_PORT_BUFFER_SIZE - BUF_START, sexp_port_stream(p)); if (res >= 0) { sexp_port_offset(p) = BUF_START; - sexp_port_size(p) = res; + sexp_port_size(p) = res + BUF_START; res = ((sexp_port_offset(p) < sexp_port_size(p)) ? ((unsigned char*)sexp_port_buf(p))[sexp_port_offset(p)++] : EOF); } @@ -1360,7 +1360,7 @@ int sexp_buffered_read_char (sexp ctx, sexp p) { res = read(sexp_port_fileno(p), sexp_port_buf(p) + BUF_START, SEXP_PORT_BUFFER_SIZE - BUF_START); if (res >= 0) { sexp_port_offset(p) = BUF_START; - sexp_port_size(p) = res; + sexp_port_size(p) = res + BUF_START; res = ((sexp_port_offset(p) < sexp_port_size(p)) ? ((unsigned char*)sexp_port_buf(p))[sexp_port_offset(p)++] : EOF); }