-bad typing in SWI emulation.

This commit is contained in:
Vítor Santos Costa 2015-02-13 12:20:46 +00:00
parent dd22039a59
commit 3bcde55a77
5 changed files with 17 additions and 14 deletions

View File

@ -3232,7 +3232,7 @@ PRED_IMPL("prompt1", 1, prompt1, 0)
if ( PL_get_atom(A1, &a) )
{ prompt1(a);
} else if ( PL_get_text(A1, &txt, CVT_ALL|CVT_EXCEPTION) )
{ prompt1(textToAtom(&txt));
{ prompt1(YAP_SWIAtomFromAtom(textToAtom(&txt)));
} else
return FALSE;
@ -3373,7 +3373,7 @@ fn_to_atom(const char *fn)
text.length = strlen(fn);
text.canonical = FALSE;
a = textToAtom(&text);
a = YAP_SWIAtomFromAtom(textToAtom(&text));
PL_free_text(&text);
return a;

View File

@ -969,7 +969,7 @@ PRED_IMPL("file_base_name", 2, file_base_name, 0)
if ( !PL_get_chars(A1, &n, CVT_ALL|REP_FN|CVT_EXCEPTION) )
return FALSE;
return PL_unify_chars(A2, PL_ATOM|REP_FN, -1, BaseName(n));
}
@ -981,8 +981,8 @@ PRED_IMPL("file_directory_name", 2, file_directory_name, 0)
if ( !PL_get_chars(A1, &n, CVT_ALL|REP_FN|CVT_EXCEPTION) )
return FALSE;
return PL_unify_chars(A2, PL_ATOM|REP_FN, -1, DirName(n, tmp));
int out = PL_unify_chars(A2, PL_ATOM|REP_FN, -1, DirName(n, tmp));
return out;
}

View File

@ -198,7 +198,7 @@ setPrologFlag(const char *name, int flags, ...)
text.length = strlen(text.text.t);
text.canonical = FALSE;
f->value.a = textToAtom(&text); /* registered: ok */
f->value.a = YAP_SWIAtomFromAtom(textToAtom(&text)); /* registered: ok */
PL_free_text(&text);

View File

@ -354,16 +354,18 @@ error:
}
atom_t
Atom
textToAtom(PL_chars_t *text)
{ if ( !PL_canonise_text(text) )
return 0;
Atom w;
if ( text->encoding == ENC_ISO_LATIN_1 )
{ return lookupAtom(text->text.t, text->length);
{ w = lookupAtom(text->text.t, text->length);
} else
{ return lookupUCSAtom(text->text.w, text->length);
{ w = lookupUCSAtom(text->text.w, text->length);
}
return w ;
}
@ -383,13 +385,14 @@ textToString(PL_chars_t *text)
int
PL_unify_text(term_t term, term_t tail, PL_chars_t *text, int type)
{ switch(type)
{ case PL_ATOM:
{ atom_t a = textToAtom(text);
{ case PL_ATOM:
{ Atom at = textToAtom(text);
Term a = MkAtomTerm(at);
if ( a )
if ( a )
{ int rval = _PL_unify_atomic(term, a);
PL_unregister_atom(a);
PL_unregister_atom(YAP_SWIAtomFromAtom(AtomOfTerm(a)));
return rval;
}
return FALSE;

View File

@ -71,7 +71,7 @@ void PL_free_text(PL_chars_t *text);
void PL_save_text(PL_chars_t *text, int flags);
COMMON(int) PL_get_text__LD(term_t l, PL_chars_t *text, int flags ARG_LD);
COMMON(atom_t) textToAtom(PL_chars_t *text);
COMMON(Atom) textToAtom(PL_chars_t *text);
COMMON(IOSTREAM *) Sopen_text(PL_chars_t *text, const char *mode);
COMMON(void) PL_text_recode(PL_chars_t *text, IOENC encoding);