- Fixed a bug for NULL case in interm/subterm.
- Fixed a bug where the mgu termlist was never deleted in interm/subterm.
This commit is contained in:
parent
5c15c21832
commit
35c55c9483
20
src/mgu.c
20
src/mgu.c
@ -117,6 +117,8 @@ termlistSubstReset (Termlist tl)
|
|||||||
//! Most general unifier.
|
//! Most general unifier.
|
||||||
/**
|
/**
|
||||||
* Try to determine the most general unifier of two terms.
|
* Try to determine the most general unifier of two terms.
|
||||||
|
* Resulting termlist must be termlistDelete'd.
|
||||||
|
*
|
||||||
*@return Returns a list of variables, that were previously open, but are now closed
|
*@return Returns a list of variables, that were previously open, but are now closed
|
||||||
* in such a way that the two terms unify. Returns \ref MGUFAIL if it is impossible.
|
* in such a way that the two terms unify. Returns \ref MGUFAIL if it is impossible.
|
||||||
*/
|
*/
|
||||||
@ -258,6 +260,15 @@ termMguInTerm (Term t1, Term t2, int (*iterator) ())
|
|||||||
flag = flag && iterator (tl);
|
flag = flag && iterator (tl);
|
||||||
// Reset variables
|
// Reset variables
|
||||||
termlistSubstReset (tl);
|
termlistSubstReset (tl);
|
||||||
|
// Remove list
|
||||||
|
termlistDelete (tl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (deVar (t1) != NULL)
|
||||||
|
{
|
||||||
|
flag = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return flag;
|
return flag;
|
||||||
@ -319,6 +330,15 @@ termMguSubTerm (Term t1, Term t2, int (*iterator) (),
|
|||||||
flag = flag && iterator (tl, keylist);
|
flag = flag && iterator (tl, keylist);
|
||||||
// Reset variables
|
// Reset variables
|
||||||
termlistSubstReset (tl);
|
termlistSubstReset (tl);
|
||||||
|
// Remove list
|
||||||
|
termlistDelete (tl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (deVar (t1) != NULL)
|
||||||
|
{
|
||||||
|
flag = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return flag;
|
return flag;
|
||||||
|
Loading…
Reference in New Issue
Block a user