Fixing read/write-u8 to block properly when srfi-18 hasn't been loaded.

This commit is contained in:
Alex Shinn 2012-08-19 23:19:37 +09:00
parent ca0244f58e
commit 46b7d943a5

View file

@ -336,9 +336,9 @@ sexp sexp_write_u8 (sexp ctx, sexp self, sexp u8, sexp out) {
if (sexp_port_stream(out)) if (sexp_port_stream(out))
clearerr(sexp_port_stream(out)); clearerr(sexp_port_stream(out));
#if SEXP_USE_GREEN_THREADS #if SEXP_USE_GREEN_THREADS
if ((errno == EAGAIN) if (errno == EAGAIN) {
&& sexp_applicablep(sexp_global(ctx, SEXP_G_THREADS_BLOCKER))) { if (sexp_applicablep(sexp_global(ctx, SEXP_G_THREADS_BLOCKER)))
sexp_apply1(ctx, sexp_global(ctx, SEXP_G_THREADS_BLOCKER), out); sexp_apply1(ctx, sexp_global(ctx, SEXP_G_THREADS_BLOCKER), out);
return sexp_global(ctx, SEXP_G_IO_BLOCK_ERROR); return sexp_global(ctx, SEXP_G_IO_BLOCK_ERROR);
} }
#endif #endif
@ -357,11 +357,11 @@ sexp sexp_read_u8 (sexp ctx, sexp self, sexp in) {
c = sexp_read_char(ctx, in); c = sexp_read_char(ctx, in);
#if SEXP_USE_GREEN_THREADS #if SEXP_USE_GREEN_THREADS
if ((c == EOF) if ((c == EOF)
&& (errno == EAGAIN) && (errno == EAGAIN)) {
&& sexp_applicablep(sexp_global(ctx, SEXP_G_THREADS_BLOCKER))) {
if (sexp_port_stream(in)) if (sexp_port_stream(in))
clearerr(sexp_port_stream(in)); clearerr(sexp_port_stream(in));
sexp_apply1(ctx, sexp_global(ctx, SEXP_G_THREADS_BLOCKER), in); if (sexp_applicablep(sexp_global(ctx, SEXP_G_THREADS_BLOCKER)))
sexp_apply1(ctx, sexp_global(ctx, SEXP_G_THREADS_BLOCKER), in);
return sexp_global(ctx, SEXP_G_IO_BLOCK_ERROR); return sexp_global(ctx, SEXP_G_IO_BLOCK_ERROR);
} }
#endif #endif