fix current_predicate

git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@587 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
vsc
2002-09-13 21:30:06 +00:00
parent e801069a19
commit 2fff206939
2 changed files with 25 additions and 4 deletions

View File

@@ -111,8 +111,14 @@ static Int
p_value(void)
{ /* '$get_value'(+Atom,?Val) */
Term t1 = Deref(ARG1);
if (!IsAtomTerm(t1))
if (IsVarTerm(t1)) {
Error(INSTANTIATION_ERROR,t1,"get_value/2");
return (FALSE);
}
if (!IsAtomTerm(t1)) {
Error(TYPE_ERROR_ATOM,t1,"get_value/2");
return (FALSE);
}
return (unify_constant(ARG2, GetValue(AtomOfTerm(t1))));
}
@@ -122,8 +128,14 @@ p_values(void)
{ /* '$values'(Atom,Old,New) */
Term t1 = Deref(ARG1), t3 = Deref(ARG3);
if (!IsAtomTerm(t1))
if (IsVarTerm(t1)) {
Error(INSTANTIATION_ERROR,t1,"set_value/2");
return (FALSE);
}
if (!IsAtomTerm(t1)) {
Error(TYPE_ERROR_ATOM,t1,"set_value/2");
return (FALSE);
}
if (!unify_constant(ARG2, GetValue(AtomOfTerm(t1))))
return (FALSE);
if (!IsVarTerm(t3)) {
@@ -1399,10 +1411,8 @@ static Int
init_current_predicate(void)
{
Term t1 = Deref(ARG1);
Term t2 = Deref(ARG2);
if (IsVarTerm(t1) || !IsAtomTerm(t1)) cut_fail();
if (IsVarTerm(t2) || !IsAtomTerm(t2)) cut_fail();
EXTRA_CBACK_ARG(3,1) = MkIntegerTerm((Int)ModulePred[LookupModule(t1)]);
return (cont_current_predicate());
}