small patches

This commit is contained in:
Vitor Santos Costa 2019-02-27 11:04:32 +00:00
parent 2d65d0463c
commit facf7ae8cd
6 changed files with 30 additions and 25 deletions

View File

@ -1296,6 +1296,10 @@ Atom Yap_LookupAtomWithLength(const char *atom,
at = NameOfFunctor(pe->FunctorOfPred); at = NameOfFunctor(pe->FunctorOfPred);
} }
} }
if (mods == PROLOG_MODULE || mods == USER_MODULE)
snprintf(LOCAL_FileNameBuf, YAP_FILENAME_MAX, "%s/" UInt_FORMAT,
RepAtom(at)->StrOfAE, arity);
else
snprintf(LOCAL_FileNameBuf, YAP_FILENAME_MAX, "%s:%s/" UInt_FORMAT, mods, snprintf(LOCAL_FileNameBuf, YAP_FILENAME_MAX, "%s:%s/" UInt_FORMAT, mods,
RepAtom(at)->StrOfAE, arity); RepAtom(at)->StrOfAE, arity);
return LOCAL_FileNameBuf; return LOCAL_FileNameBuf;

View File

@ -349,7 +349,7 @@ static void split_megaclause(PredEntry *ap) {
mcl = ClauseCodeToMegaClause(ap->cs.p_code.FirstClause); mcl = ClauseCodeToMegaClause(ap->cs.p_code.FirstClause);
if (mcl->ClFlags & ExoMask) { if (mcl->ClFlags & ExoMask) {
Yap_Error(PERMISSION_ERROR_MODIFY_STATIC_PROCEDURE, TermNil, Yap_Error(PERMISSION_ERROR_MODIFY_STATIC_PROCEDURE, Yap_PredicateIndicator(CurrentModule,ap),
"while deleting clause from exo predicate %s/%d\n", "while deleting clause from exo predicate %s/%d\n",
RepAtom(NameOfFunctor(ap->FunctorOfPred))->StrOfAE, RepAtom(NameOfFunctor(ap->FunctorOfPred))->StrOfAE,
ap->ArityOfPE); ap->ArityOfPE);
@ -1465,34 +1465,30 @@ static int not_was_reconsulted(PredEntry *p, Term t, int mode) {
} }
static yamop *addcl_permission_error(const char *file, const char *function, static yamop *addcl_permission_error(const char *file, const char *function,
int lineno, AtomEntry *ap, Int Arity, int lineno, PredEntry *ap,
int in_use) { int in_use) {
CACHE_REGS CACHE_REGS
Term culprit; Term culprit = Yap_PredicateIndicator(CurrentModule, ap);
if (Arity == 0) return in_use
culprit = MkAtomTerm(AbsAtom(ap)); ? (ap->ArityOfPE == 0
else
culprit = Yap_MkNewApplTerm(Yap_MkFunctor(AbsAtom(ap), Arity), Arity);
return (in_use
? (Arity == 0
? Yap_Error__(false, file, function, lineno, ? Yap_Error__(false, file, function, lineno,
PERMISSION_ERROR_MODIFY_STATIC_PROCEDURE, PERMISSION_ERROR_MODIFY_STATIC_PROCEDURE,
culprit, "static predicate %s is in use", culprit, "static predicate %s is in use",
ap->StrOfAE) NameOfPred(ap)->StrOfAE)
: Yap_Error__( : Yap_Error__(
false, file, function, lineno, false, file, function, lineno,
PERMISSION_ERROR_MODIFY_STATIC_PROCEDURE, culprit, PERMISSION_ERROR_MODIFY_STATIC_PROCEDURE, culprit,
"static predicate %s/" Int_FORMAT " is in use", "static predicate %s/" Int_FORMAT " is in use",
ap->StrOfAE, Arity)) NameOfPred(ap), ap->ArityOfPE))
: (Arity == 0 : (ap->ArityOfPE == 0
? Yap_Error__(false, file, function, lineno, ? Yap_Error__(false, file, function, lineno,
PERMISSION_ERROR_MODIFY_STATIC_PROCEDURE, PERMISSION_ERROR_MODIFY_STATIC_PROCEDURE,
culprit, "system predicate %s is in use", culprit, "system predicate %s is in use",
ap->StrOfAE) NameOfPred(ap)->StrOfAE)
: Yap_Error__(false, file, function, lineno, : Yap_Error__(false, file, function, lineno,
PERMISSION_ERROR_MODIFY_STATIC_PROCEDURE, PERMISSION_ERROR_MODIFY_STATIC_PROCEDURE,
culprit, "system predicate %s/" Int_FORMAT, culprit, "system predicate %s/" Int_FORMAT,
ap->StrOfAE, Arity))); NameOfPred(ap)->StrOfAE, ap->ArityOfPE));
} }
PredEntry *Yap_PredFromClause(Term t USES_REGS) { PredEntry *Yap_PredFromClause(Term t USES_REGS) {
@ -1752,7 +1748,7 @@ bool Yap_addclause(Term t, yamop *cp, Term tmode, Term mod, Term *t4ref)
PELOCK(20, p); PELOCK(20, p);
/* we are redefining a prolog module predicate */ /* we are redefining a prolog module predicate */
if (Yap_constPred(p)) { if (Yap_constPred(p)) {
addcl_permission_error(__FILE__, __FUNCTION__, __LINE__, RepAtom(at), Arity, addcl_permission_error(__FILE__, __FUNCTION__, __LINE__, p,
FALSE); FALSE);
UNLOCKPE(30, p); UNLOCKPE(30, p);
return false; return false;
@ -2189,7 +2185,7 @@ static Int p_purge_clauses(USES_REGS1) { /* '$purge_clauses'(+Func) */
PELOCK(21, pred); PELOCK(21, pred);
if (pred->PredFlags & StandardPredFlag) { if (pred->PredFlags & StandardPredFlag) {
UNLOCKPE(33, pred); UNLOCKPE(33, pred);
Yap_Error(PERMISSION_ERROR_MODIFY_STATIC_PROCEDURE, t, "assert/1"); Yap_Error(PERMISSION_ERROR_MODIFY_STATIC_PROCEDURE, Yap_PredicateIndicator(CurrentModule, pred), "assert/1");
return (FALSE); return (FALSE);
} }
purge_clauses(pred); purge_clauses(pred);
@ -2452,13 +2448,13 @@ static Int new_multifile(USES_REGS1) {
} }
if (pe->PredFlags & (TabledPredFlag | ForeignPredFlags)) { if (pe->PredFlags & (TabledPredFlag | ForeignPredFlags)) {
UNLOCKPE(26, pe); UNLOCKPE(26, pe);
addcl_permission_error(__FILE__, __FUNCTION__, __LINE__, RepAtom(at), arity, addcl_permission_error(__FILE__, __FUNCTION__, __LINE__, pe,
FALSE); FALSE);
return false; return false;
} }
if (pe->cs.p_code.NOfClauses) { if (pe->cs.p_code.NOfClauses) {
UNLOCKPE(26, pe); UNLOCKPE(26, pe);
addcl_permission_error(__FILE__, __FUNCTION__, __LINE__, RepAtom(at), arity, addcl_permission_error(__FILE__, __FUNCTION__, __LINE__, pe,
FALSE); FALSE);
return false; return false;
} }
@ -2693,7 +2689,7 @@ static Int mk_dynamic(USES_REGS1) { /* '$make_dynamic'(+P) */
(UserCPredFlag | CArgsPredFlag | NumberDBPredFlag | AtomDBPredFlag | (UserCPredFlag | CArgsPredFlag | NumberDBPredFlag | AtomDBPredFlag |
TestPredFlag | AsmPredFlag | CPredFlag | BinaryPredFlag)) { TestPredFlag | AsmPredFlag | CPredFlag | BinaryPredFlag)) {
UNLOCKPE(30, pe); UNLOCKPE(30, pe);
addcl_permission_error(__FILE__, __FUNCTION__, __LINE__, RepAtom(at), arity, addcl_permission_error(__FILE__, __FUNCTION__, __LINE__, pe,
FALSE); FALSE);
return false; return false;
} }
@ -2707,7 +2703,7 @@ static Int mk_dynamic(USES_REGS1) { /* '$make_dynamic'(+P) */
} }
if (pe->cs.p_code.NOfClauses != 0) { if (pe->cs.p_code.NOfClauses != 0) {
UNLOCKPE(26, pe); UNLOCKPE(26, pe);
addcl_permission_error(__FILE__, __FUNCTION__, __LINE__, RepAtom(at), arity, addcl_permission_error(__FILE__, __FUNCTION__, __LINE__, pe,
FALSE); FALSE);
return false; return false;
} }
@ -2758,7 +2754,7 @@ static Int new_meta_pred(USES_REGS1) {
} }
if (pe->cs.p_code.NOfClauses) { if (pe->cs.p_code.NOfClauses) {
UNLOCKPE(26, pe); UNLOCKPE(26, pe);
addcl_permission_error(__FILE__, __FUNCTION__, __LINE__, RepAtom(at), arity, addcl_permission_error(__FILE__, __FUNCTION__, __LINE__, pe,
FALSE); FALSE);
return false; return false;
} }
@ -4106,7 +4102,7 @@ static Int
| TabledPredFlag | TabledPredFlag
#endif /* TABLING */ #endif /* TABLING */
)) { )) {
Yap_Error(PERMISSION_ERROR_MODIFY_STATIC_PROCEDURE, t, Yap_Error(PERMISSION_ERROR_MODIFY_STATIC_PROCEDURE, Yap_PredicateIndicator(CurrentModule, ap),
"dbload_get_space/4"); "dbload_get_space/4");
return FALSE; return FALSE;
} }

View File

@ -346,11 +346,12 @@ Yap_FindStreamForAlias (Atom al)
while (aliasp < aliasp_max) { while (aliasp < aliasp_max) {
if (aliasp->name == al) { if (aliasp->name == al) {
return aliasp->alias_stream; return aliasp->alias_stream > 0;
} }
aliasp++; aliasp++;
} }
return true; LOCAL_Error_TYPE = DOMAIN_ERROR_STREAM;
return false;
} }
/* create a new alias arg for stream sno */ /* create a new alias arg for stream sno */

View File

@ -783,6 +783,7 @@ static Int stream_property(USES_REGS1) { /* Init current_stream */
"current_stream/3"); "current_stream/3");
if (i < 0) { if (i < 0) {
UNLOCK(GLOBAL_Stream[i].streamlock); UNLOCK(GLOBAL_Stream[i].streamlock);
Yap_ThrowError(LOCAL_Error_TYPE, t1, "bad stream descriptor");
return false; // error... return false; // error...
} }
EXTRA_CBACK_ARG(2, 1) = MkIntTerm(i); EXTRA_CBACK_ARG(2, 1) = MkIntTerm(i);

View File

@ -79,6 +79,7 @@ python_query( Caller, String, Bindings ) :-
output(Caller, Bindings). output(Caller, Bindings).
output( Caller, Bindings ) :- output( Caller, Bindings ) :-
fail,
Answer := {}, Answer := {},
% start_low_level_trace, % start_low_level_trace,
foldl(ground_dict(answer), Bindings, [], Ts), foldl(ground_dict(answer), Bindings, [], Ts),

View File

@ -1045,7 +1045,9 @@ prolog:print_message(Severity, Msg) :-
!. !.
prolog:print_message(Level, _Msg) :- prolog:print_message(Level, _Msg) :-
current_prolog_flag(verbose_load, false), current_prolog_flag(verbose_load, false),
prolog_load_context(file, _FileName), '$show_consult_level'(LC),
LC > 0,
Level \= error,
Level \= warning, Level \= warning,
!. !.
prolog:print_message(Level, _Msg) :- prolog:print_message(Level, _Msg) :-