- add debugging code to memory allocation
= atom to number: cleanup function name as this is more than just supporting SWI - SrcMask only applies to rules. - add auxiliary type/error function - fix typos - fix enumeration mode in current_flag - get rid of TrueName routines, use AbsoluteFileName instead. - detail synatx error source
This commit is contained in:
parent
f440981b41
commit
74b2b5561d
22
C/alloc.c
22
C/alloc.c
@ -60,11 +60,31 @@ static char SccsId[] = "%W% %G%";
|
||||
/************************************************************************/
|
||||
/* Yap workspace management */
|
||||
|
||||
#define MASK 0x968e00
|
||||
#if USE_SYSTEM_MALLOC
|
||||
#if 0
|
||||
inline static void * my_malloc(size_t sz)
|
||||
{
|
||||
void *p;
|
||||
p = malloc(sz);
|
||||
// Yap_DebugPuts(stderr,"gof\n");
|
||||
return p;
|
||||
}
|
||||
inline static void my_free(void *p)
|
||||
{
|
||||
printf("f %p\n",p);
|
||||
free(p);
|
||||
if (((CELL)p & 0xffffff00) == MASK) jmp_deb(1);
|
||||
// Yap_DebugPuts(stderr,"gof\n");
|
||||
}
|
||||
#else
|
||||
#define my_malloc(sz) malloc(sz)
|
||||
#define my_free(ptr) free(ptr)
|
||||
|
||||
|
||||
#endif
|
||||
#define my_realloc(ptr, sz, osz, safe) realloc(ptr, sz)
|
||||
#define my_realloc0(ptr, sz) realloc(ptr, sz)
|
||||
#define my_free(ptr) free(ptr)
|
||||
#else
|
||||
#define my_malloc(sz) Yap_dlmalloc(sz)
|
||||
#define my_realloc0(ptr, sz) Yap_dlrealloc(ptr, sz)
|
||||
|
@ -58,6 +58,9 @@
|
||||
#include <malloc.h>
|
||||
#endif
|
||||
|
||||
typedef void *atom_t;
|
||||
typedef void *functor_t;
|
||||
|
||||
typedef enum {
|
||||
FRG_FIRST_CALL = 0, /* Initial call */
|
||||
FRG_CUTTED = 1, /* Context was cutted */
|
||||
@ -2094,10 +2097,14 @@ X_API int YAP_InitConsult(int mode, const char *filename, int *osnop) {
|
||||
}
|
||||
bool consulted = (mode == YAP_CONSULT_MODE);
|
||||
Yap_init_consult(consulted, filename);
|
||||
f = fopen(Yap_AbsoluteFile(filename, LOCAL_FileNameBuf, FILENAME_MAX - 1),
|
||||
"r");
|
||||
const char *full = Yap_AbsoluteFile(filename, true);
|
||||
if (!full)
|
||||
return -1;
|
||||
f = fopen( full, "r");
|
||||
if (!f)
|
||||
return -1;
|
||||
else
|
||||
free( (char *)full );
|
||||
sno = Yap_OpenStream(f, NULL, TermNil, Input_Stream_f);
|
||||
*osnop = Yap_CheckAlias(AtomLoopStream);
|
||||
if (!Yap_AddAlias(AtomLoopStream, sno)) {
|
||||
@ -3380,30 +3387,35 @@ X_API int YAP_RequiresExtraStack(size_t sz) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
atom_t *TR_Atoms;
|
||||
functor_t *TR_Functors;
|
||||
size_t AtomTranslations, MaxAtomTranslations;
|
||||
size_t FunctorTranslations, MaxFunctorTranslations;
|
||||
|
||||
X_API Int YAP_AtomToInt(Atom At) {
|
||||
TranslationEntry *te = Yap_GetTranslationProp(At, 0);
|
||||
if (te != NIL)
|
||||
return te->Translation;
|
||||
SWI_Atoms[AtomTranslations] = At;
|
||||
TR_Atoms[AtomTranslations] = At;
|
||||
Yap_PutAtomTranslation(At, 0, AtomTranslations);
|
||||
AtomTranslations++;
|
||||
if (AtomTranslations == MaxAtomTranslations) {
|
||||
Atom *nt = (Atom *)malloc(sizeof(Atom) * 2 * MaxAtomTranslations),
|
||||
*ot = SWI_Atoms;
|
||||
atom_t *ot = TR_Atoms;
|
||||
atom_t *nt = (atom_t *)malloc(sizeof(atom_t) * 2 * MaxAtomTranslations);
|
||||
if (nt == NULL) {
|
||||
Yap_Error(SYSTEM_ERROR_INTERNAL, MkAtomTerm(At),
|
||||
"No more room for translations");
|
||||
return -1;
|
||||
}
|
||||
memcpy(nt, ot, sizeof(Atom) * MaxAtomTranslations);
|
||||
SWI_Atoms = nt;
|
||||
memcpy(nt, ot, sizeof(atom_t) * MaxAtomTranslations);
|
||||
TR_Atoms = nt;
|
||||
free(ot);
|
||||
MaxAtomTranslations *= 2;
|
||||
}
|
||||
return AtomTranslations - 1;
|
||||
}
|
||||
|
||||
X_API Atom YAP_IntToAtom(Int i) { return SWI_Atoms[i]; }
|
||||
X_API Atom YAP_IntToAtom(Int i) { return TR_Atoms[i]; }
|
||||
|
||||
X_API Int YAP_FunctorToInt(Functor f) {
|
||||
Atom At = NameOfFunctor(f);
|
||||
@ -3411,27 +3423,27 @@ X_API Int YAP_FunctorToInt(Functor f) {
|
||||
TranslationEntry *te = Yap_GetTranslationProp(At, arity);
|
||||
if (te != NIL)
|
||||
return te->Translation;
|
||||
SWI_Functors[FunctorTranslations] = f;
|
||||
TR_Functors[FunctorTranslations] = f;
|
||||
Yap_PutAtomTranslation(At, arity, FunctorTranslations);
|
||||
FunctorTranslations++;
|
||||
if (FunctorTranslations == MaxFunctorTranslations) {
|
||||
Functor *nt =
|
||||
(Functor *)malloc(sizeof(Functor) * 2 * MaxFunctorTranslations),
|
||||
*ot = SWI_Functors;
|
||||
functor_t *nt =
|
||||
(functor_t *)malloc(sizeof(functor_t) * 2 * MaxFunctorTranslations),
|
||||
*ot = TR_Functors;
|
||||
if (nt == NULL) {
|
||||
Yap_Error(SYSTEM_ERROR_INTERNAL, MkAtomTerm(At),
|
||||
"No more room for translations");
|
||||
return -1;
|
||||
}
|
||||
memcpy(nt, ot, sizeof(Functor) * MaxFunctorTranslations);
|
||||
SWI_Functors = nt;
|
||||
memcpy(nt, ot, sizeof(functor_t) * MaxFunctorTranslations);
|
||||
TR_Functors = nt;
|
||||
free(ot);
|
||||
MaxFunctorTranslations *= 2;
|
||||
}
|
||||
return FunctorTranslations - 1;
|
||||
}
|
||||
|
||||
X_API Functor YAP_IntToFunctor(Int i) { return SWI_Functors[i]; }
|
||||
X_API Functor YAP_IntToFunctor(Int i) { return TR_Functors[i]; }
|
||||
|
||||
#endif // C_INTERFACE_C
|
||||
|
||||
|
@ -3647,7 +3647,7 @@ static Int fetch_next_static_clause(PredEntry *pe, yamop *i_code, Term th,
|
||||
don't do this!! I might have stored a choice-point and changed ASP
|
||||
Yap_RecoverSlots(3);
|
||||
*/
|
||||
if (cl == NULL || !(cl->ClFlags & SrcMask)) {
|
||||
if (cl == NULL || !(pe->PredFlags & SourcePredFlag)) {
|
||||
UNLOCKPE(45, pe);
|
||||
return false;
|
||||
}
|
||||
@ -3703,7 +3703,7 @@ static Int fetch_next_static_clause(PredEntry *pe, yamop *i_code, Term th,
|
||||
P = cl->ClCode;
|
||||
}
|
||||
UNLOCKPE(45, pe);
|
||||
return TRUE;
|
||||
return true;
|
||||
} else {
|
||||
Term t;
|
||||
|
||||
|
20
C/errors.c
20
C/errors.c
@ -133,7 +133,7 @@ bool Yap_PrintWarning(Term twarning) {
|
||||
CACHE_REGS
|
||||
PredEntry *pred = RepPredProp(PredPropByFunc(
|
||||
FunctorPrintMessage, PROLOG_MODULE)); // PROCEDURE_print_message2;
|
||||
Term cmod = CurrentModule;
|
||||
Term cmod = ( CurrentModule == PROLOG_MODULE ? TermProlog : CurrentModule );
|
||||
bool rc;
|
||||
Term ts[2];
|
||||
|
||||
@ -157,6 +157,8 @@ bool Yap_PrintWarning(Term twarning) {
|
||||
}
|
||||
ts[1] = twarning;
|
||||
ts[0] = MkAtomTerm(AtomWarning);
|
||||
HB = B->cp_h = HR;
|
||||
B->cp_tr = TR;
|
||||
rc = Yap_execute_pred(pred, ts, true PASS_REGS);
|
||||
LOCAL_within_print_message = false;
|
||||
LOCAL_DoingUndefp = false;
|
||||
@ -613,7 +615,7 @@ static Int
|
||||
is_boolean( USES_REGS1 )
|
||||
{
|
||||
Term t = Deref(ARG1);
|
||||
//Term Context = Deref(ARG2);
|
||||
//Term Context = Deref(ARG2)Yap_Error(INSTANTIATION_ERROR, t, NULL);;
|
||||
if (IsVarTerm(t)) {
|
||||
Yap_Error(INSTANTIATION_ERROR, t, NULL);
|
||||
return false;
|
||||
@ -621,6 +623,19 @@ is_boolean( USES_REGS1 )
|
||||
return t == TermTrue || t == TermFalse;
|
||||
}
|
||||
|
||||
static Int
|
||||
is_atom( USES_REGS1 )
|
||||
{
|
||||
Term t = Deref(ARG1);
|
||||
//Term Context = Deref(ARG2)Yap_Error(INSTANTIATION_ERROR, t, NULL);;
|
||||
if (IsVarTerm(t)) {
|
||||
Yap_Error(INSTANTIATION_ERROR, t, NULL);
|
||||
return false;
|
||||
}
|
||||
return IsAtomTerm( t );
|
||||
}
|
||||
|
||||
|
||||
|
||||
static Int
|
||||
is_callable( USES_REGS1 )
|
||||
@ -699,6 +714,7 @@ Yap_InitErrorPreds( void )
|
||||
CurrentModule = ERROR_MODULE;
|
||||
Yap_InitCPred("is_boolean", 2, is_boolean, TestPredFlag);
|
||||
Yap_InitCPred("is_callable", 2, is_callable, TestPredFlag);
|
||||
Yap_InitCPred("is_atom", 2, is_atom, TestPredFlag);
|
||||
Yap_InitCPred("is_predicate_indicator", 2, is_predicate_indicator, TestPredFlag);
|
||||
CurrentModule = cm;
|
||||
}
|
||||
|
2
C/exec.c
2
C/exec.c
@ -1037,7 +1037,7 @@ static Int exec_absmi(bool top, yap_reset_t reset_mode USES_REGS) {
|
||||
LOCAL_PrologMode = UserMode;
|
||||
} break;
|
||||
case 3: { /* saved state */
|
||||
return FALSE;
|
||||
return false;
|
||||
}
|
||||
default:
|
||||
/* do nothing */
|
||||
|
22
C/flags.c
22
C/flags.c
@ -104,7 +104,7 @@ static bool dqf1(ModEntry *new, Term t2 USES_REGS) {
|
||||
/* bad argument, but still an atom */
|
||||
Yap_Error(DOMAIN_ERROR_OUT_OF_RANGE, t2, "bad option %s for backquoted "
|
||||
"string flag, use one string, "
|
||||
"arom, codes or chars",
|
||||
"atom, codes or chars",
|
||||
RepAtom(AtomOfTerm(t2))->StrOfAE);
|
||||
return false;
|
||||
} else {
|
||||
@ -139,7 +139,7 @@ static bool bqf1(ModEntry *new, Term t2 USES_REGS) {
|
||||
}
|
||||
Yap_Error(DOMAIN_ERROR_OUT_OF_RANGE, t2, "bad option %s for backquoted "
|
||||
"string flag, use one string, "
|
||||
"arom, codes or chars",
|
||||
"atom, codes or chars",
|
||||
RepAtom(AtomOfTerm(t2))->StrOfAE);
|
||||
return false;
|
||||
} else {
|
||||
@ -589,9 +589,10 @@ static void initFlag(flag_info *f, int fnum, bool global) {
|
||||
|
||||
static bool executable(Term inp) {
|
||||
CACHE_REGS
|
||||
if (GLOBAL_argv && GLOBAL_argv[0])
|
||||
Yap_TrueFileName(GLOBAL_argv[0], LOCAL_FileNameBuf, FALSE);
|
||||
else
|
||||
if (GLOBAL_argv && GLOBAL_argv[0]) {
|
||||
if (!Yap_AbsoluteFileInBuffer(GLOBAL_argv[0], LOCAL_FileNameBuf, YAP_FILENAME_MAX - 1,true))
|
||||
return false;
|
||||
} else
|
||||
strncpy(LOCAL_FileNameBuf, Yap_FindExecutable(), YAP_FILENAME_MAX - 1);
|
||||
|
||||
return Yap_unify(MkAtomTerm(Yap_LookupAtom(LOCAL_FileNameBuf)), inp);
|
||||
@ -880,8 +881,7 @@ static Int cont_current_prolog_flag(USES_REGS1) {
|
||||
}
|
||||
EXTRA_CBACK_ARG(2, 1) = MkIntTerm(++i);
|
||||
flag = getYapFlag(f);
|
||||
if (!Yap_unify(f, ARG2))
|
||||
return false;
|
||||
return Yap_unify(flag, ARG2);
|
||||
}
|
||||
cut_fail();
|
||||
}
|
||||
@ -1294,7 +1294,8 @@ do_prolog_flag_property(Term tflag,
|
||||
args = Yap_ArgList2ToVector(opts, prolog_flag_property_defs,
|
||||
PROLOG_FLAG_PROPERTY_END);
|
||||
if (args == NULL) {
|
||||
return FALSE;
|
||||
Yap_Error( LOCAL_Error_TYPE, LOCAL_Error_Term, NULL );
|
||||
return false;
|
||||
}
|
||||
if (!IsAtomTerm(tflag)) {
|
||||
if (IsApplTerm(tflag) && FunctorOfTerm(tflag) == FunctorModule) {
|
||||
@ -1454,8 +1455,9 @@ static Int do_create_prolog_flag(USES_REGS1) {
|
||||
|
||||
args = Yap_ArgList2ToVector(opts, prolog_flag_property_defs,
|
||||
PROLOG_FLAG_PROPERTY_END);
|
||||
if (args == NULL) {
|
||||
return FALSE;
|
||||
if (args == NULL) {
|
||||
Yap_Error( LOCAL_Error_TYPE, LOCAL_Error_Term, NULL );
|
||||
return false;
|
||||
}
|
||||
fv = GetFlagProp(AtomOfTerm(tflag));
|
||||
if (fv) {
|
||||
|
7
C/init.c
7
C/init.c
@ -1028,13 +1028,6 @@ static void InitLogDBErasedMarker(void) {
|
||||
INIT_CLREF_COUNT(LogDBErasedMarker);
|
||||
}
|
||||
|
||||
static void InitSWIAtoms(void) {
|
||||
MaxAtomTranslations = N_SWI_ATOMS;
|
||||
MaxFunctorTranslations = N_SWI_FUNCTORS;
|
||||
SWI_Atoms = (Atom *)malloc(sizeof(Atom) * MaxAtomTranslations);
|
||||
SWI_Functors = (Functor *)malloc(sizeof(Functor) * 2 * N_SWI_ATOMS);
|
||||
}
|
||||
|
||||
static void InitEmptyWakeups(void) {}
|
||||
|
||||
static void InitAtoms(void) {
|
||||
|
@ -69,7 +69,7 @@ LoadForeign(StringList ofiles, StringList libs,
|
||||
strcpy(LOCAL_ErrorSay," Load Failed: in AIX you must load a single object file");
|
||||
return LOAD_FAILLED;
|
||||
}
|
||||
if (!Yap_TrueFileName(AtomName(ofiles->name), LOCAL_FileNameBuf, TRUE)) {
|
||||
if (!Yap_AbsoluteFileInBuffer(AtomName(ofiles->name), LOCAL_FileNameBuf, YAP_FILENAME_MAX, true)) {
|
||||
strcpy(LOCAL_ErrorSay, " Trying to open unexisting file in LoadForeign ");
|
||||
return LOAD_FAILLED;
|
||||
}
|
||||
|
@ -67,7 +67,8 @@ Yap_FindExecutable(void)
|
||||
if (*GLOBAL_argv[0] == '/') {
|
||||
if (oktox(GLOBAL_argv[0])) {
|
||||
strcpy(LOCAL_FileNameBuf, GLOBAL_argv[0]);
|
||||
Yap_TrueFileName(LOCAL_FileNameBuf, GLOBAL_Executable, TRUE);
|
||||
Yap_AbsoluteFileInBuffer(LOCAL_FileNameBuf, true);
|
||||
strncpy( GLOBAL_Executable, LOCAL_FileNameBuf, YAP_MAXPATHLEN);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@ -87,12 +88,12 @@ Yap_FindExecutable(void)
|
||||
cp++;
|
||||
if (!oktox(LOCAL_FileNameBuf))
|
||||
continue;
|
||||
Yap_TrueFileName(LOCAL_FileNameBuf, GLOBAL_Executable, TRUE);
|
||||
Yap_AbsoluteFileInBuffer(Yap_AbsoluteFileInBuffer(LOCAL_FileNameBuf, GLOBAL_Executable, TRUE);
|
||||
return;
|
||||
}
|
||||
/* one last try for dual systems */
|
||||
strcpy(LOCAL_FileNameBuf, GLOBAL_argv[0]);
|
||||
Yap_TrueFileName(LOCAL_FileNameBuf, GLOBAL_Executable, TRUE);
|
||||
strcpy(LOCAL_FileNameBuf, GLOBAL_argv[0]);
|
||||
Yap_AbsoluteFileInBuffer(Yap_AbsoluteFileInBuffer(LOCAL_FileNameBuf, GLOBAL_Executable, TRUE);
|
||||
if (oktox(GLOBAL_Executable))
|
||||
return GLOBAL_Executable;
|
||||
else
|
||||
|
59
C/parser.c
59
C/parser.c
@ -175,10 +175,11 @@ static void syntax_msg(const char *msg, ...) {
|
||||
va_list ap;
|
||||
|
||||
if (LOCAL_toktide == LOCAL_tokptr) {
|
||||
char out[YAP_FILENAME_MAX];
|
||||
va_start(ap, msg);
|
||||
vsnprintf(LOCAL_FileNameBuf2, YAP_FILENAME_MAX - 1, msg, ap);
|
||||
LOCAL_ErrorMessage = LOCAL_FileNameBuf2;
|
||||
LOCAL_Error_TYPE = SYNTAX_ERROR;
|
||||
vsnprintf(out, YAP_FILENAME_MAX - 1, msg, ap);
|
||||
LOCAL_Error_Term = MkStringTerm( out );
|
||||
LOCAL_Error_TYPE = SYNTAX_ERROR;
|
||||
va_end(ap);
|
||||
}
|
||||
}
|
||||
@ -463,7 +464,7 @@ inline static void checkfor(wchar_t c, JMPBUFF *FailBuff USES_REGS) {
|
||||
LOCAL_tokptr->TokInfo != (Term)c) {
|
||||
char s[1024];
|
||||
strncpy(s, Yap_tokRep(LOCAL_tokptr), 1023);
|
||||
syntax_msg("expected to find \'%c\', found %s", c, s);
|
||||
syntax_msg("line %d: expected to find \'%c\', found %s", LOCAL_tokptr->TokPos, c, s);
|
||||
FAIL;
|
||||
}
|
||||
NextToken;
|
||||
@ -543,12 +544,12 @@ static Term ParseArgs(Atom a, wchar_t close, JMPBUFF *FailBuff,
|
||||
|
||||
func = Yap_MkFunctor(a, 1);
|
||||
if (func == NULL) {
|
||||
syntax_msg("Heap Overflow");
|
||||
syntax_msg("line %d: Heap Overflow",LOCAL_tokptr->TokPos );
|
||||
FAIL;
|
||||
}
|
||||
t = Yap_MkApplTerm(func, nargs, p);
|
||||
if (HR > ASP - 4096) {
|
||||
syntax_msg("Stack Overflow");
|
||||
syntax_msg("line %d: Stack Overflow",LOCAL_tokptr->TokPos );
|
||||
return TermNil;
|
||||
}
|
||||
NextToken;
|
||||
@ -558,7 +559,7 @@ static Term ParseArgs(Atom a, wchar_t close, JMPBUFF *FailBuff,
|
||||
while (1) {
|
||||
Term *tp = (Term *)ParserAuxSp;
|
||||
if (ParserAuxSp + 1 > LOCAL_TrailTop) {
|
||||
syntax_msg("Trail Overflow");
|
||||
syntax_msg("line %d: Trail Overflow",LOCAL_tokptr->TokPos);
|
||||
FAIL;
|
||||
}
|
||||
*tp++ = Unsigned(ParseTerm(999, FailBuff PASS_REGS));
|
||||
@ -576,12 +577,12 @@ static Term ParseArgs(Atom a, wchar_t close, JMPBUFF *FailBuff,
|
||||
* order
|
||||
*/
|
||||
if (HR > ASP - (nargs + 1)) {
|
||||
syntax_msg("Stack Overflow");
|
||||
syntax_msg("line %d: Stack Overflow",LOCAL_tokptr->TokPos);
|
||||
FAIL;
|
||||
}
|
||||
func = Yap_MkFunctor(a, nargs);
|
||||
if (func == NULL) {
|
||||
syntax_msg("Heap Overflow");
|
||||
syntax_msg("line %d: Heap Overflow",LOCAL_tokptr->TokPos);
|
||||
FAIL;
|
||||
}
|
||||
#ifdef SFUNC
|
||||
@ -596,7 +597,7 @@ static Term ParseArgs(Atom a, wchar_t close, JMPBUFF *FailBuff,
|
||||
t = Yap_MkApplTerm(func, nargs, p);
|
||||
#endif
|
||||
if (HR > ASP - 4096) {
|
||||
syntax_msg("Stack Overflow");
|
||||
syntax_msg("line %d: Stack Overflow",LOCAL_tokptr->TokPos);
|
||||
return TermNil;
|
||||
}
|
||||
/* check for possible overflow against local stack */
|
||||
@ -631,7 +632,7 @@ loop:
|
||||
/* check for possible overflow against local stack */
|
||||
if (HR > ASP - 4096) {
|
||||
to_store[1] = TermNil;
|
||||
syntax_msg("Stack Overflow");
|
||||
syntax_msg("line %d: Stack Overflow" ,LOCAL_tokptr->TokPos);
|
||||
FAIL;
|
||||
} else {
|
||||
to_store[1] = AbsPair(HR);
|
||||
@ -645,7 +646,7 @@ loop:
|
||||
to_store[1] = MkAtomTerm(AtomNil);
|
||||
}
|
||||
} else {
|
||||
syntax_msg("looking for symbol ',','|' got symbol '%s'",
|
||||
syntax_msg("line %d: looking for symbol ',','|' got symbol '%s'",LOCAL_tokptr->TokPos,
|
||||
Yap_tokRep(LOCAL_tokptr));
|
||||
FAIL;
|
||||
}
|
||||
@ -717,14 +718,14 @@ static Term ParseTerm(int prio, JMPBUFF *FailBuff USES_REGS) {
|
||||
TRY(
|
||||
/* build appl on the heap */
|
||||
func = Yap_MkFunctor((Atom)t, 1); if (func == NULL) {
|
||||
syntax_msg("Heap Overflow");
|
||||
syntax_msg("line %d: Heap Overflow",LOCAL_tokptr->TokPos);
|
||||
FAIL;
|
||||
}
|
||||
t = ParseTerm(oprprio, FailBuff PASS_REGS);
|
||||
t = Yap_MkApplTerm(func, 1, &t);
|
||||
/* check for possible overflow against local stack */
|
||||
if (HR > ASP - 4096) {
|
||||
syntax_msg("Stack Overflow");
|
||||
syntax_msg("line %d: Stack Overflow",LOCAL_tokptr->TokPos);
|
||||
FAIL;
|
||||
} curprio = opprio;
|
||||
, break;)
|
||||
@ -750,7 +751,7 @@ static Term ParseTerm(int prio, JMPBUFF *FailBuff USES_REGS) {
|
||||
LOCAL_Error_TYPE = YAP_NO_ERROR;
|
||||
t = Yap_CharsToTDQ(p, CurrentModule, LOCAL_encoding PASS_REGS);
|
||||
if (!t) {
|
||||
syntax_msg("could not convert \"%s\"", (char *)LOCAL_tokptr->TokInfo);
|
||||
syntax_msg("line %d: could not convert \"%s\"",LOCAL_tokptr->TokPos, (char *)LOCAL_tokptr->TokInfo);
|
||||
FAIL;
|
||||
}
|
||||
LOCAL_Error_TYPE = oerr;
|
||||
@ -765,7 +766,7 @@ static Term ParseTerm(int prio, JMPBUFF *FailBuff USES_REGS) {
|
||||
LOCAL_Error_TYPE = YAP_NO_ERROR;
|
||||
t = Yap_WCharsToTDQ(p, CurrentModule PASS_REGS);
|
||||
if (!t) {
|
||||
syntax_msg("could not convert \'%S\'", (wchar_t *)LOCAL_tokptr->TokInfo);
|
||||
syntax_msg("line %d: could not convert \'%S\'",LOCAL_tokptr->TokPos, (wchar_t *)LOCAL_tokptr->TokInfo);
|
||||
FAIL;
|
||||
}
|
||||
LOCAL_Error_TYPE = oerr;
|
||||
@ -781,7 +782,7 @@ static Term ParseTerm(int prio, JMPBUFF *FailBuff USES_REGS) {
|
||||
|
||||
t = Yap_CharsToTBQ(p, CurrentModule, LOCAL_encoding PASS_REGS);
|
||||
if (!t) {
|
||||
syntax_msg("could not convert \'%s\"", (char *)LOCAL_tokptr->TokInfo);
|
||||
syntax_msg("line %d: could not convert \'%s\"",LOCAL_tokptr->TokPos, (char *)LOCAL_tokptr->TokInfo);
|
||||
FAIL;
|
||||
}
|
||||
LOCAL_Error_TYPE = oerr;
|
||||
@ -796,7 +797,7 @@ static Term ParseTerm(int prio, JMPBUFF *FailBuff USES_REGS) {
|
||||
yap_error_number oerr = LOCAL_Error_TYPE;
|
||||
LOCAL_Error_TYPE = YAP_NO_ERROR;
|
||||
if (!t) {
|
||||
syntax_msg("could not convert \"%S\"", (wchar_t *)LOCAL_tokptr->TokInfo);
|
||||
syntax_msg("line %d: could not convert \"%S\"",LOCAL_tokptr->TokPos, (wchar_t *)LOCAL_tokptr->TokInfo);
|
||||
FAIL;
|
||||
}
|
||||
LOCAL_Error_TYPE = oerr;
|
||||
@ -812,7 +813,7 @@ static Term ParseTerm(int prio, JMPBUFF *FailBuff USES_REGS) {
|
||||
break;
|
||||
|
||||
case Error_tok:
|
||||
syntax_msg("found ill-formed \"%s\"", Yap_tokRep(LOCAL_tokptr));
|
||||
syntax_msg("line %d: found ill-formed \"%s\"",LOCAL_tokptr->TokPos, Yap_tokRep(LOCAL_tokptr));
|
||||
FAIL;
|
||||
|
||||
case Ponctuation_tok:
|
||||
@ -847,13 +848,13 @@ static Term ParseTerm(int prio, JMPBUFF *FailBuff USES_REGS) {
|
||||
t = Yap_MkApplTerm(FunctorBraces, 1, &t);
|
||||
/* check for possible overflow against local stack */
|
||||
if (HR > ASP - 4096) {
|
||||
syntax_msg("Stack Overflow");
|
||||
syntax_msg("line %d: Stack Overflow",LOCAL_tokptr->TokPos);
|
||||
FAIL;
|
||||
}
|
||||
checkfor('}', FailBuff PASS_REGS);
|
||||
break;
|
||||
default:
|
||||
syntax_msg("unexpected ponctuation signal %s", Yap_tokRep(LOCAL_tokptr));
|
||||
syntax_msg("line %d: unexpected ponctuation signal %s",LOCAL_tokptr->TokPos, Yap_tokRep(LOCAL_tokptr));
|
||||
FAIL;
|
||||
}
|
||||
break;
|
||||
@ -944,7 +945,7 @@ static Term ParseTerm(int prio, JMPBUFF *FailBuff USES_REGS) {
|
||||
NextToken;
|
||||
break;
|
||||
default:
|
||||
syntax_msg("expected operator, got \'%s\'", Yap_tokRep(LOCAL_tokptr));
|
||||
syntax_msg("line %d: expected operator, got \'%s\'",LOCAL_tokptr->TokPos, Yap_tokRep(LOCAL_tokptr));
|
||||
FAIL;
|
||||
}
|
||||
|
||||
@ -960,7 +961,7 @@ static Term ParseTerm(int prio, JMPBUFF *FailBuff USES_REGS) {
|
||||
TRY3(
|
||||
func = Yap_MkFunctor((Atom)LOCAL_tokptr->TokInfo, 2);
|
||||
if (func == NULL) {
|
||||
syntax_msg("Heap Overflow");
|
||||
syntax_msg("line %d: Heap Overflow",LOCAL_tokptr->TokPos);
|
||||
FAIL;
|
||||
} NextToken;
|
||||
{
|
||||
@ -970,7 +971,7 @@ static Term ParseTerm(int prio, JMPBUFF *FailBuff USES_REGS) {
|
||||
t = Yap_MkApplTerm(func, 2, args);
|
||||
/* check for possible overflow against local stack */
|
||||
if (HR > ASP - 4096) {
|
||||
syntax_msg("Stack Overflow");
|
||||
syntax_msg("line %d: Stack Overflow",LOCAL_tokptr->TokPos);
|
||||
FAIL;
|
||||
}
|
||||
},
|
||||
@ -983,13 +984,13 @@ static Term ParseTerm(int prio, JMPBUFF *FailBuff USES_REGS) {
|
||||
/* parse as posfix operator */
|
||||
Functor func = Yap_MkFunctor((Atom)LOCAL_tokptr->TokInfo, 1);
|
||||
if (func == NULL) {
|
||||
syntax_msg("Heap Overflow");
|
||||
syntax_msg("line %d: Heap Overflow",LOCAL_tokptr->TokPos);
|
||||
FAIL;
|
||||
}
|
||||
t = Yap_MkApplTerm(func, 1, &t);
|
||||
/* check for possible overflow against local stack */
|
||||
if (HR > ASP - 4096) {
|
||||
syntax_msg("Stack Overflow");
|
||||
syntax_msg("line %d: Stack Overflow",LOCAL_tokptr->TokPos);
|
||||
FAIL;
|
||||
}
|
||||
curprio = opprio;
|
||||
@ -1008,7 +1009,7 @@ static Term ParseTerm(int prio, JMPBUFF *FailBuff USES_REGS) {
|
||||
t = Yap_MkApplTerm(FunctorComma, 2, args);
|
||||
/* check for possible overflow against local stack */
|
||||
if (HR > ASP - 4096) {
|
||||
syntax_msg("Stack Overflow");
|
||||
syntax_msg("line %d: Stack Overflow",LOCAL_tokptr->TokPos);
|
||||
FAIL;
|
||||
}
|
||||
curprio = 1000;
|
||||
@ -1023,7 +1024,7 @@ static Term ParseTerm(int prio, JMPBUFF *FailBuff USES_REGS) {
|
||||
t = Yap_MkApplTerm(FunctorVBar, 2, args);
|
||||
/* check for possible overflow against local stack */
|
||||
if (HR > ASP - 4096) {
|
||||
syntax_msg("Stack Overflow");
|
||||
syntax_msg("line %d: Stack Overflow",LOCAL_tokptr->TokPos);
|
||||
FAIL;
|
||||
}
|
||||
curprio = opprio;
|
||||
@ -1053,7 +1054,7 @@ static Term ParseTerm(int prio, JMPBUFF *FailBuff USES_REGS) {
|
||||
}
|
||||
}
|
||||
if (LOCAL_tokptr->Tok <= Ord(WString_tok)) {
|
||||
syntax_msg("expected operator, got \'%s\'", Yap_tokRep(LOCAL_tokptr));
|
||||
syntax_msg("line %d: expected operator, got \'%s\'",LOCAL_tokptr->TokPos, Yap_tokRep(LOCAL_tokptr));
|
||||
FAIL;
|
||||
}
|
||||
break;
|
||||
|
4
C/save.c
4
C/save.c
@ -1400,7 +1400,7 @@ commit_to_saved_state(char *s, CELL *Astate, CELL *ATrail, CELL *AStack, CELL *A
|
||||
LOCAL_PrologMode = BootMode;
|
||||
if (Yap_HeapBase) {
|
||||
if (falseGlobalPrologFlag( HALT_AFTER_CONSULT_FLAG ) && !silentMode( )) {
|
||||
Yap_TrueFileName(s,LOCAL_FileNameBuf2, YAP_FILENAME_MAX);
|
||||
Yap_AbsoluteFileInBuffer(s,LOCAL_FileNameBuf2, YAP_FILENAME_MAX, true);
|
||||
fprintf(stderr, "%% Restoring file %s\n", LOCAL_FileNameBuf2);
|
||||
}
|
||||
Yap_CloseStreams(TRUE);
|
||||
@ -1442,7 +1442,7 @@ OpenRestore(char *inpf, char *YapLibDir, CELL *Astate, CELL *ATrail, CELL *AStac
|
||||
int mode;
|
||||
char fname[PATH_MAX+1];
|
||||
|
||||
if (!Yap_trueFileName( inpf, YAP_STARTUP, YapLibDir, fname, true, YAP_SAVED_STATE, true, true))
|
||||
if (!Yap_AbsoluteFileInBuffer( inpf, fname, PATH_MAX, true))
|
||||
return false;
|
||||
if (fname[0] &&
|
||||
(mode = try_open(fname,Astate,ATrail,AStack,AHeap,streamp)) != FAIL_RESTORE) {
|
||||
|
@ -1247,6 +1247,7 @@ const char *Yap_tokRep(TokEntry *tokptr) {
|
||||
return buf;
|
||||
case Var_tok: {
|
||||
VarEntry *varinfo = (VarEntry *)info;
|
||||
varinfo->VarAdr = TermNil;
|
||||
return varinfo->VarRep;
|
||||
}
|
||||
case String_tok:
|
||||
|
2
C/text.c
2
C/text.c
@ -650,7 +650,7 @@ write_atom( void *s0, seq_tv_t *out, encoding_t enc, int minimal, size_t leng US
|
||||
switch (enc) {
|
||||
case ENC_ISO_UTF8:
|
||||
{ unsigned char *s = s0, *lim = s + strnlen(s0, max);
|
||||
wchar_t *buf = malloc(sizeof(wchar_t)*((lim+1)-s)), *ptr = buf;
|
||||
wchar_t *buf = malloc(sizeof(wchar_t)*((lim+2)-s)), *ptr = buf;
|
||||
Atom at;
|
||||
|
||||
while (*s && s < lim) {
|
||||
|
Reference in New Issue
Block a user