bug in EOF processing when doing read.
git-svn-id: https://yap.svn.sf.net/svnroot/yap/trunk@885 b08c6af1-5177-4d33-ba66-4b1c6b8b522a
This commit is contained in:
parent
32301f0060
commit
2db3829b82
@ -1580,7 +1580,11 @@ Yap_Error (yap_error_number type, Term where, char *format,...)
|
|||||||
}
|
}
|
||||||
if (type != PURE_ABORT) {
|
if (type != PURE_ABORT) {
|
||||||
/* This is used by some complex procedures to detect there was an error */
|
/* This is used by some complex procedures to detect there was an error */
|
||||||
|
if (IsAtomTerm(nt[0])) {
|
||||||
Yap_ErrorMessage = RepAtom(AtomOfTerm(nt[0]))->StrOfAE;
|
Yap_ErrorMessage = RepAtom(AtomOfTerm(nt[0]))->StrOfAE;
|
||||||
|
} else {
|
||||||
|
Yap_ErrorMessage = RepAtom(NameOfFunctor(FunctorOfTerm(nt[0])))->StrOfAE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case OUT_OF_HEAP_ERROR:
|
case OUT_OF_HEAP_ERROR:
|
||||||
|
@ -2983,8 +2983,11 @@ do_read(int inp_stream)
|
|||||||
/* preserve value of H after scanning: otherwise we may lose strings
|
/* preserve value of H after scanning: otherwise we may lose strings
|
||||||
and floats */
|
and floats */
|
||||||
old_H = H;
|
old_H = H;
|
||||||
if ((Stream[inp_stream].status & Eof_Stream_f)
|
if (Stream[inp_stream].status & Eof_Stream_f) {
|
||||||
&& !Yap_eot_before_eof) {
|
if (Yap_eot_before_eof) {
|
||||||
|
/* next read should give out an end of file */
|
||||||
|
Stream[inp_stream].status |= Push_Eof_Stream_f;
|
||||||
|
} else {
|
||||||
if (tokstart != NIL && tokstart->Tok != Ord (eot_tok)) {
|
if (tokstart != NIL && tokstart->Tok != Ord (eot_tok)) {
|
||||||
/* we got the end of file from an abort */
|
/* we got the end of file from an abort */
|
||||||
if (Yap_ErrorMessage == "Abort") {
|
if (Yap_ErrorMessage == "Abort") {
|
||||||
@ -3002,6 +3005,7 @@ do_read(int inp_stream)
|
|||||||
Yap_unify_constant (ARG2, MkAtomTerm (AtomEof)));
|
Yap_unify_constant (ARG2, MkAtomTerm (AtomEof)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
repeat_cycle:
|
repeat_cycle:
|
||||||
TR_before_parse = TR;
|
TR_before_parse = TR;
|
||||||
if (Yap_ErrorMessage || (t = Yap_Parse ()) == 0) {
|
if (Yap_ErrorMessage || (t = Yap_Parse ()) == 0) {
|
||||||
|
@ -884,7 +884,7 @@ Yap_tokenizer(int inp_stream)
|
|||||||
if(Yap_Option[2]) fprintf(Yap_stderr,"[Token %d %ld]",Ord(kind),(unsigned long int)t->TokInfo);
|
if(Yap_Option[2]) fprintf(Yap_stderr,"[Token %d %ld]",Ord(kind),(unsigned long int)t->TokInfo);
|
||||||
#endif
|
#endif
|
||||||
if (Yap_ErrorMessage) {
|
if (Yap_ErrorMessage) {
|
||||||
/* insert an error token to inform the system on what happened */
|
/* insert an error token to inform the system of what happened */
|
||||||
TokEntry *e = (TokEntry *) AllocScannerMemory(sizeof(TokEntry));
|
TokEntry *e = (TokEntry *) AllocScannerMemory(sizeof(TokEntry));
|
||||||
if (e == NULL) {
|
if (e == NULL) {
|
||||||
Yap_ErrorMessage = "not enough stack space to read in term";
|
Yap_ErrorMessage = "not enough stack space to read in term";
|
||||||
|
Reference in New Issue
Block a user