atoms passed through the SWI interface must always have a hold.
This commit is contained in:
parent
037597ce2f
commit
f2dc53a53e
@ -704,6 +704,7 @@ X_API atom_t PL_new_atom_wchars(size_t len, const wchar_t *c)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Yap_AtomIncreaseHold(at0);
|
||||||
at = AtomToSWIAtom(at0);
|
at = AtomToSWIAtom(at0);
|
||||||
YAP_FreeSpaceFromYap(nbf);
|
YAP_FreeSpaceFromYap(nbf);
|
||||||
}
|
}
|
||||||
@ -844,6 +845,7 @@ X_API int PL_put_atom_chars(term_t t, const char *s)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Yap_AtomIncreaseHold(at);
|
||||||
Yap_PutInSlot(t,MkAtomTerm(at) PASS_REGS);
|
Yap_PutInSlot(t,MkAtomTerm(at) PASS_REGS);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -872,6 +874,7 @@ X_API int PL_put_atom_nchars(term_t t, size_t len, const char *s)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Yap_AtomIncreaseHold(at);
|
||||||
Yap_PutInSlot(t,MkAtomTerm(at) PASS_REGS);
|
Yap_PutInSlot(t,MkAtomTerm(at) PASS_REGS);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -1072,6 +1075,7 @@ X_API int PL_unify_atom_chars(term_t t, const char *s)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Yap_AtomIncreaseHold(catom);
|
||||||
cterm = MkAtomTerm(catom);
|
cterm = MkAtomTerm(catom);
|
||||||
return Yap_unify(Yap_GetFromSlot(t PASS_REGS),cterm);
|
return Yap_unify(Yap_GetFromSlot(t PASS_REGS),cterm);
|
||||||
}
|
}
|
||||||
@ -1095,6 +1099,7 @@ X_API int PL_unify_atom_nchars(term_t t, size_t len, const char *s)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Yap_AtomIncreaseHold(catom);
|
||||||
free(buf);
|
free(buf);
|
||||||
cterm = MkAtomTerm(catom);
|
cterm = MkAtomTerm(catom);
|
||||||
return YAP_Unify(Yap_GetFromSlot(t PASS_REGS),cterm);
|
return YAP_Unify(Yap_GetFromSlot(t PASS_REGS),cterm);
|
||||||
@ -1391,6 +1396,7 @@ LookupMaxAtom(size_t n, char *s)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Yap_AtomIncreaseHold(catom);
|
||||||
Yap_FreeCodeSpace(buf);
|
Yap_FreeCodeSpace(buf);
|
||||||
return catom;
|
return catom;
|
||||||
}
|
}
|
||||||
@ -1495,6 +1501,7 @@ X_API int PL_unify_term(term_t l,...)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Yap_AtomIncreaseHold(at);
|
||||||
*pt++ = MkAtomTerm(at);
|
*pt++ = MkAtomTerm(at);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1590,6 +1597,7 @@ X_API int PL_unify_term(term_t l,...)
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Yap_AtomIncreaseHold(at);
|
||||||
*pt++ = MkAtomTerm(at);
|
*pt++ = MkAtomTerm(at);
|
||||||
} else {
|
} else {
|
||||||
Atom at;
|
Atom at;
|
||||||
|
Reference in New Issue
Block a user