fix bug in nth_clause/3.
fix compiler warning.
This commit is contained in:
parent
8c556f21ba
commit
b2378bf34f
14
C/index.c
14
C/index.c
@ -3029,10 +3029,7 @@ reinstall_clauses(ClauseDef *cls, ClauseDef *end, PredEntry *ap, istack_entry *s
|
|||||||
static istack_entry *
|
static istack_entry *
|
||||||
install_log_upd_clause(ClauseDef *cls, PredEntry *ap, istack_entry *stack)
|
install_log_upd_clause(ClauseDef *cls, PredEntry *ap, istack_entry *stack)
|
||||||
{
|
{
|
||||||
int last_arg = TRUE;
|
|
||||||
|
|
||||||
istack_entry *sp = stack;
|
istack_entry *sp = stack;
|
||||||
last_arg = TRUE;
|
|
||||||
while (sp->pos) {
|
while (sp->pos) {
|
||||||
if ((Int)(sp->pos) > 0) {
|
if ((Int)(sp->pos) > 0) {
|
||||||
add_head_info(cls, sp->pos);
|
add_head_info(cls, sp->pos);
|
||||||
@ -3078,9 +3075,6 @@ install_log_upd_clause(ClauseDef *cls, PredEntry *ap, istack_entry *stack)
|
|||||||
else
|
else
|
||||||
arity = ArityOfFunctor((Functor)f);
|
arity = ArityOfFunctor((Functor)f);
|
||||||
}
|
}
|
||||||
if (arity != argno+1) {
|
|
||||||
last_arg = FALSE;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sp++;
|
sp++;
|
||||||
@ -6648,9 +6642,13 @@ Yap_NthClause(PredEntry *ap, Int ncls)
|
|||||||
return NULL;
|
return NULL;
|
||||||
else if (ncls == 1)
|
else if (ncls == 1)
|
||||||
return to_clause(ap->cs.p_code.FirstClause,ap);
|
return to_clause(ap->cs.p_code.FirstClause,ap);
|
||||||
else if (ncls == ap->cs.p_code.NOfClauses)
|
else if (ap->PredFlags & MegaClausePredFlag) {
|
||||||
|
MegaClause *mcl = ClauseCodeToMegaClause(ap->cs.p_code.FirstClause);
|
||||||
|
/* fast access to nth element, all have same size */
|
||||||
|
return (LogUpdClause *)((char *)mcl->ClCode+(ncls-1)*mcl->ClItemSize);
|
||||||
|
} else if (ncls == ap->cs.p_code.NOfClauses) {
|
||||||
return to_clause(ap->cs.p_code.LastClause,ap);
|
return to_clause(ap->cs.p_code.LastClause,ap);
|
||||||
else if (ncls < 0)
|
} else if (ncls < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (ap->ModuleOfPred != IDB_MODULE) {
|
if (ap->ModuleOfPred != IDB_MODULE) {
|
||||||
|
Reference in New Issue
Block a user