diff --git a/os/chartypes.c b/os/chartypes.c index 334f9496f..72e5c02a1 100644 --- a/os/chartypes.c +++ b/os/chartypes.c @@ -68,31 +68,6 @@ Term Yap_StringToNumberTerm(char *s, encoding_t *encp) { while (*s && isblank(*s++)) ; t = Yap_scan_num(GLOBAL_Stream + sno); - if (t == TermNil) { - CACHE_REGS - int sign = 1; - if (s[0] == '+') { - s++; - } - if (s[0] == '-') { - s++; - sign = -1; - } - if (strcmp(s, "inf") == 0) { - if (sign > 0) { - return MkFloatTerm(INFINITY); - } else { - return MkFloatTerm(-INFINITY); - } - } - if (strcmp(s, "nan") == 0) { - if (sign > 0) { - return MkFloatTerm(NAN); - } else { - return MkFloatTerm(-NAN); - } - } - } Yap_CloseStream(sno); UNLOCK(GLOBAL_Stream[sno].streamlock); return t; diff --git a/os/readterm.c b/os/readterm.c index e56f300e1..3fe4b55e8 100644 --- a/os/readterm.c +++ b/os/readterm.c @@ -225,11 +225,10 @@ Term Yap_syntax_error(TokEntry *errtok, int sno) { *tailp = TermNl; startline = MkIntegerTerm(cline); - clean_vars(LOCAL_VarTable); - clean_vars(LOCAL_AnonVarTable); if (errtok != LOCAL_toktide) { errtok = LOCAL_toktide; } + LOCAL_Error_TYPE = YAP_NO_ERROR; errline = MkIntegerTerm(errtok->TokPos); while (tok) { Term ts[2]; @@ -288,10 +287,14 @@ Term Yap_syntax_error(TokEntry *errtok, int sno) { } break; case String_tok: { Term t0 = Yap_CharsToTDQ((char *)info, CurrentModule, ENC_ISO_LATIN1 PASS_REGS); + if (!t0) + return 0; ts[0] = Yap_MkApplTerm(Yap_MkFunctor(AtomString, 1), 1, &t0); } break; case WString_tok: { Term t0 = Yap_WCharsToTDQ((wchar_t *)info, CurrentModule PASS_REGS); + if (!t0) + return 0; ts[0] = Yap_MkApplTerm(Yap_MkFunctor(AtomString, 1), 1, &t0); } break; case BQString_tok: { @@ -343,9 +346,9 @@ Term Yap_syntax_error(TokEntry *errtok, int sno) { tf[0] = MkStringTerm(""); /* file */ tf[2] = Yap_StreamUserName(sno); - tf[1] = Yap_MkApplTerm(FunctorSyntaxError, 4, tf); - tf[0] = MkAtomTerm(AtomSyntaxError); - return Yap_MkApplTerm(FunctorError, 2, tf); + clean_vars(LOCAL_VarTable); + clean_vars(LOCAL_AnonVarTable); + return Yap_MkApplTerm(FunctorSyntaxError, 4, tf); } typedef struct FEnv { @@ -379,6 +382,8 @@ static xarg *setClauseReadEnv(Term opts, FEnv *fe, struct renv *re, int inp_stream); static xarg *setReadEnv(Term opts, FEnv *fe, struct renv *re, int inp_stream) { CACHE_REGS + LOCAL_VarTable = NULL; + LOCAL_AnonVarTable = NULL; re->cm = CurrentModule; xarg *args = Yap_ArgListToVector(opts, read_defs, READ_END); if (args == NULL) {