diff --git a/H/YapText.h b/H/YapText.h index 327340422..ebdb391bf 100644 --- a/H/YapText.h +++ b/H/YapText.h @@ -300,6 +300,8 @@ Yap_AtomicToTDQ(Term t0, Term mod USES_REGS) if (!Yap_CVT_Text(&inp, &out PASS_REGS)) return 0L; + if (out.type == YAP_STRING_ATOM) + return MkAtomTerm( out.val.a); return out.val.t; } @@ -371,6 +373,8 @@ Yap_CharsToTDQ( const char *s, Term mod USES_REGS ) out.type = mod_to_type(mod PASS_REGS); if (!Yap_CVT_Text(&inp, &out PASS_REGS)) return 0L; + if (out.type == YAP_STRING_ATOM) + return MkAtomTerm( out.val.a ); return out.val.t; } @@ -451,7 +455,7 @@ Yap_ListToAtom(Term t0 USES_REGS) { seq_tv_t inp, out; inp.val.t = t0; - inp.type = YAP_STRING_STRING|YAP_STRING_ATOMS_CODES|YAP_STRING_TERM; + inp.type = YAP_STRING_STRING|YAP_STRING_ATOMS_CODES|YAP_STRING_TERM|YAP_STRING_ATOM; out.type = YAP_STRING_ATOM; if (!Yap_CVT_Text(&inp, &out PASS_REGS)) return 0L; @@ -524,8 +528,11 @@ YapListToTDQ(Term t0, Term mod USES_REGS) inp.type = YAP_STRING_STRING|YAP_STRING_ATOMS_CODES|YAP_STRING_TERM; out.type = mod_to_type(mod PASS_REGS); - if (!Yap_CVT_Text(&inp, &out PASS_REGS)) + if (!Yap_CVT_Text(&inp, &out PASS_REGS)) return 0L; + if (out.type == YAP_STRING_ATOM) { + return MkAtomTerm( out.val.a); + } return out.val.t; } @@ -602,6 +609,8 @@ Yap_NCharsToTDQ( const char *s, size_t len, Term mod USES_REGS ) out.max = len; if (!Yap_CVT_Text(&inp, &out PASS_REGS)) return 0L; + if (out.type == YAP_STRING_ATOM) + return MkAtomTerm( out.val.a ); return out.val.t; } @@ -854,6 +863,8 @@ Yap_WCharsToTDQ( wchar_t *s, Term mod USES_REGS ) out.type = mod_to_type(mod PASS_REGS); if (!Yap_CVT_Text(&inp, &out PASS_REGS)) return 0L; + if (out.type == YAP_STRING_ATOM) + return MkAtomTerm( out.val.a); return out.val.t; }