fix atom_term

This commit is contained in:
Vitor Santos Costa 2016-12-03 10:32:13 -06:00
parent d37e198c12
commit 44dab9ab33
3 changed files with 9 additions and 15 deletions

View File

@ -264,7 +264,7 @@ bool Yap_ReadlineOps(StreamDesc *s) {
static int prolog_complete(int ignore, int key) { static int prolog_complete(int ignore, int key) {
if (rl_point > 0 && rl_line_buffer[rl_point - 1] != ' ') { if (rl_point > 0 && rl_line_buffer[rl_point - 1] != ' ') {
#if HAVE_DECL_RL_CATCH_SIGNALS /* actually version >= 1.2, or true readline \ #if HAVE_DECL_RL_CATCH_SIGNALS /* actually version >= 1.2, or true readline \
*/ */
rl_begin_undo_group(); rl_begin_undo_group();
rl_complete(ignore, key); rl_complete(ignore, key);

View File

@ -1253,26 +1253,20 @@ static Int style_checker(USES_REGS1) {
} }
X_API Term Yap_StringToTerm(const char *s, size_t len, encoding_t *encp, X_API Term Yap_StringToTerm(const char *s, size_t len, encoding_t *encp,
int prio, Term *bindings) { int prio, Term *bindingsp) {
CACHE_REGS CACHE_REGS
Term bvar = MkVarTerm(), ctl; Term ctl;
yhandle_t sl;
int lvl = push_text_stack(); int lvl = push_text_stack();
if (len == 0) { if (len == 0) {
Term rval = TermEof; Term rval = TermEof;
if (rval && bindings) { pop_text_stack(lvl);
*bindings = TermNil;
}
pop_text_stack(lvl);
return rval; return rval;
} }
if (bindings) { if (bindingsp) {
ctl = Yap_MkApplTerm(Yap_MkFunctor(AtomVariableNames, 1), 1, &bvar); ctl = Yap_MkNewApplTerm(Yap_MkFunctor(AtomVariableNames, 1), 1);
sl = Yap_PushHandle(bvar);
} else { } else {
ctl = TermNil; ctl = TermNil;
sl = 0;
} }
Term rval; Term rval;
@ -1281,8 +1275,8 @@ X_API Term Yap_StringToTerm(const char *s, size_t len, encoding_t *encp,
rval = Yap_read_term(stream, ctl, 3); rval = Yap_read_term(stream, ctl, 3);
Yap_CloseStream(stream); Yap_CloseStream(stream);
UNLOCK(GLOBAL_Stream[stream].streamlock); UNLOCK(GLOBAL_Stream[stream].streamlock);
if (rval && bindings) { if (rval && bindingsp) {
*bindings = Yap_PopHandle(sl); *bindingsp = ArgOfTerm(1,ctl);
} }
pop_text_stack(lvl); pop_text_stack(lvl);
return rval; return rval;

View File

@ -106,7 +106,7 @@ typedef enum mem_buf_source {
extern char *Yap_MemStreamBuf(int sno); extern char *Yap_MemStreamBuf(int sno);
extern X_API Term Yap_StringToTerm(const char *s, size_t len, encoding_t *encp, extern X_API Term Yap_StringToTerm(const char *s, size_t len, encoding_t *encp,
int prio, Term *bindings_p); int prio, Term *bindingsp);
extern Term Yap_StringToNumberTerm(const char *s, encoding_t *encp, extern Term Yap_StringToNumberTerm(const char *s, encoding_t *encp,
bool error_on); bool error_on);
extern int Yap_FormatFloat(Float f, char **s, size_t sz); extern int Yap_FormatFloat(Float f, char **s, size_t sz);