fixing sexp_port_size after buffered read on non-custom ports

This commit is contained in:
Alex Shinn 2017-06-29 14:17:34 +09:00
parent 582c46935e
commit f2f6aadb3d

4
sexp.c
View file

@ -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)); res = fread(sexp_port_buf(p) + BUF_START, 1, SEXP_PORT_BUFFER_SIZE - BUF_START, sexp_port_stream(p));
if (res >= 0) { if (res >= 0) {
sexp_port_offset(p) = BUF_START; 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)) res = ((sexp_port_offset(p) < sexp_port_size(p))
? ((unsigned char*)sexp_port_buf(p))[sexp_port_offset(p)++] : EOF); ? ((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); res = read(sexp_port_fileno(p), sexp_port_buf(p) + BUF_START, SEXP_PORT_BUFFER_SIZE - BUF_START);
if (res >= 0) { if (res >= 0) {
sexp_port_offset(p) = BUF_START; 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)) res = ((sexp_port_offset(p) < sexp_port_size(p))
? ((unsigned char*)sexp_port_buf(p))[sexp_port_offset(p)++] : EOF); ? ((unsigned char*)sexp_port_buf(p))[sexp_port_offset(p)++] : EOF);
} }