fix confused predicate term_to_string/2.
This commit is contained in:
parent
4cbf3387e1
commit
4d132d278c
2
.gitignore
vendored
2
.gitignore
vendored
@ -90,3 +90,5 @@ CMakeLists.txt.user.378dfb0
|
|||||||
CMakeLists.txt.user.4d738ef
|
CMakeLists.txt.user.4d738ef
|
||||||
|
|
||||||
CMakeLists.txt.user.c65360d
|
CMakeLists.txt.user.c65360d
|
||||||
|
|
||||||
|
C/pl-yap.c
|
||||||
|
@ -505,7 +505,7 @@ static bool complete_clause_processing(FEnv *fe, TokEntry *tokstarts, Term t);
|
|||||||
static bool complete_processing(FEnv *fe, TokEntry *tokstart) {
|
static bool complete_processing(FEnv *fe, TokEntry *tokstart) {
|
||||||
CACHE_REGS
|
CACHE_REGS
|
||||||
Term v1, v2, v3;
|
Term v1, v2, v3;
|
||||||
if (fe->vp) {
|
if (fe->vp) {
|
||||||
while (TRUE) {
|
while (TRUE) {
|
||||||
fe->old_H = HR;
|
fe->old_H = HR;
|
||||||
|
|
||||||
@ -547,7 +547,9 @@ static bool complete_processing(FEnv *fe, TokEntry *tokstart) {
|
|||||||
|
|
||||||
// trail must be ok by now.]
|
// trail must be ok by now.]
|
||||||
if ((!fe->vp || Yap_unify(v1, fe->vp)) &&
|
if ((!fe->vp || Yap_unify(v1, fe->vp)) &&
|
||||||
(!fe->np || Yap_unify(v2, fe->np)) && (!fe->tp || Yap_unify(v3, fe->tp)))
|
(!fe->np || Yap_unify(v2, fe->np)) &&
|
||||||
|
(!fe->sp || Yap_unify(v3, fe->sp)) &&
|
||||||
|
(!fe->tp || Yap_unify(fe->tp, CurrentPositionToTerm())))
|
||||||
return fe->t;
|
return fe->t;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -607,13 +609,13 @@ static parser_state_t scanEOF(FEnv *fe, int inp_stream) {
|
|||||||
static parser_state_t initParser(Term opts, FEnv *fe, REnv *re, int inp_stream,
|
static parser_state_t initParser(Term opts, FEnv *fe, REnv *re, int inp_stream,
|
||||||
int nargs) {
|
int nargs) {
|
||||||
CACHE_REGS
|
CACHE_REGS
|
||||||
fe->old_H = HR;
|
|
||||||
LOCAL_ErrorMessage = NULL;
|
LOCAL_ErrorMessage = NULL;
|
||||||
fe->old_TR = TR;
|
fe->old_TR = TR;
|
||||||
LOCAL_Error_TYPE = YAP_NO_ERROR;
|
LOCAL_Error_TYPE = YAP_NO_ERROR;
|
||||||
LOCAL_SourceFileName = GLOBAL_Stream[inp_stream].name;
|
LOCAL_SourceFileName = GLOBAL_Stream[inp_stream].name;
|
||||||
LOCAL_eot_before_eof = false;
|
LOCAL_eot_before_eof = false;
|
||||||
fe->tpos = StreamPosition(inp_stream);
|
fe->tpos = StreamPosition(inp_stream);
|
||||||
|
fe->old_H = HR;
|
||||||
fe->reading_clause = nargs < 0;
|
fe->reading_clause = nargs < 0;
|
||||||
if (fe->reading_clause) {
|
if (fe->reading_clause) {
|
||||||
fe->nargs = -nargs;
|
fe->nargs = -nargs;
|
||||||
@ -1225,22 +1227,22 @@ static Int atom_to_term(USES_REGS1) {
|
|||||||
*/
|
*/
|
||||||
static Int
|
static Int
|
||||||
term_to_string(USES_REGS1) {
|
term_to_string(USES_REGS1) {
|
||||||
Term t1 = Deref(ARG2), rc = false;
|
Term t2 = Deref(ARG2), rc = false, t1 = Deref(ARG1);
|
||||||
const char * s;
|
const char * s;
|
||||||
if (IsVarTerm(t1)) {
|
if (IsVarTerm(t2)) {
|
||||||
size_t length;
|
size_t length;
|
||||||
s = Yap_TermToString(ARG2, NULL, 0, &length, 0, Quote_illegal_f|Handle_vars_f);
|
s = Yap_TermToString(ARG1, NULL, 0, &length, 0, Quote_illegal_f|Handle_vars_f);
|
||||||
if (!s || !
|
if (!s || !
|
||||||
MkStringTerm(s)) {
|
MkStringTerm(s)) {
|
||||||
Yap_Error(RESOURCE_ERROR_HEAP,t1,"Could not get memory from the operating system");
|
Yap_Error(RESOURCE_ERROR_HEAP,t1,"Could not get memory from the operating system");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return Yap_unify(ARG2, MkStringTerm(s));
|
return Yap_unify(ARG2, MkStringTerm(s));
|
||||||
} else if (!IsStringTerm(t1)) {
|
} else if (!IsStringTerm(t2)) {
|
||||||
Yap_Error(TYPE_ERROR_STRING, t1, "string_to_ter®m/2");
|
Yap_Error(TYPE_ERROR_STRING, t2, "string_to_ter®m/2");
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
s = StringOfTerm(t1);
|
s = StringOfTerm(t2);
|
||||||
}
|
}
|
||||||
return (rc = readFromBuffer(s, TermNil)) != 0L && Yap_unify(rc, ARG1);
|
return (rc = readFromBuffer(s, TermNil)) != 0L && Yap_unify(rc, ARG1);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user