diff --git a/os/fmem.c b/os/fmem.c index e0e1b2434..3ad38b9c6 100644 --- a/os/fmem.c +++ b/os/fmem.c @@ -138,7 +138,8 @@ int Yap_open_buf_read_stream(const char *buf, size_t nchars, encoding_t *encp, sno = GetFreeStreamD(); if (sno < 0) - return (PlIOError(RESOURCE_ERROR_MAX_STREAMS, TermNil, + return (PlIOError(RESOURCE_ERROR_MAX_STREAMS, + TermNil, "new stream not available for open_mem_read_stream/1")); st = GLOBAL_Stream + sno; if (encp) diff --git a/os/iopreds.c b/os/iopreds.c index fa15baedd..1dd992639 100644 --- a/os/iopreds.c +++ b/os/iopreds.c @@ -254,7 +254,10 @@ void Yap_DefaultStreamOps(StreamDesc *st) { return; } st->stream_wputc = put_wchar; - st->stream_wgetc = get_wchar_UTF8; + if (st->encoding == ENC_ISO_UTF8) + st->stream_wgetc = get_wchar_UTF8; + else + st->stream_wgetc = get_wchar; st->stream_putc = FilePutc; st->stream_getc = PlGetc; if (st->status & (Promptable_Stream_f)) { diff --git a/os/readterm.c b/os/readterm.c index 3a7e6ca7f..f1e39d252 100644 --- a/os/readterm.c +++ b/os/readterm.c @@ -1353,8 +1353,8 @@ static Int style_checker(USES_REGS1) { Term Yap_BufferToTerm(const unsigned char *s, size_t len, Term opts) { Term rval; int sno; - encoding_t L; - sno = Yap_open_buf_read_stream((char *)s, len, &L, MEM_BUF_USER); + encoding_t l = ENC_ISO_UTF8; + sno = Yap_open_buf_read_stream((char *)s, len, &l, MEM_BUF_USER); rval = Yap_read_term(sno, opts, false); Yap_CloseStream(sno);