remove some more duplicated code
This commit is contained in:
@@ -2088,10 +2088,12 @@ YAP_ReadBuffer(char *s, Term *tp)
|
||||
{
|
||||
CACHE_REGS
|
||||
Term t;
|
||||
Int sl;
|
||||
BACKUP_H();
|
||||
|
||||
sl = Yap_NewSlots(1 PASS_REGS);
|
||||
LOCAL_ErrorMessage=NULL;
|
||||
while ((t = Yap_StringToTerm(s,tp)) == 0L) {
|
||||
while (!PL_chars_to_term(s,sl)) {
|
||||
if (LOCAL_ErrorMessage) {
|
||||
if (!strcmp(LOCAL_ErrorMessage,"Stack Overflow")) {
|
||||
if (!Yap_dogc( 0, NULL PASS_REGS )) {
|
||||
@@ -2115,8 +2117,8 @@ YAP_ReadBuffer(char *s, Term *tp)
|
||||
return 0L;
|
||||
}
|
||||
} else {
|
||||
*tp = MkAtomTerm(Yap_LookupAtom(LOCAL_ErrorMessage));
|
||||
LOCAL_ErrorMessage = NULL;
|
||||
// get from slot has an exception
|
||||
*tp = Yap_GetFromSlot(sl PASS_REGS);
|
||||
RECOVER_H();
|
||||
return 0L;
|
||||
}
|
||||
@@ -2127,7 +2129,7 @@ YAP_ReadBuffer(char *s, Term *tp)
|
||||
}
|
||||
}
|
||||
RECOVER_H();
|
||||
return t;
|
||||
return Yap_GetFromSlot(sl PASS_REGS);
|
||||
}
|
||||
|
||||
/* copy a string to a buffer */
|
||||
|
||||
49
C/iopreds.c
49
C/iopreds.c
@@ -389,49 +389,6 @@ GenerateSyntaxError(Term *tp, TokEntry *tokstart, IOSTREAM *sno, Term msg USES_R
|
||||
}
|
||||
}
|
||||
|
||||
Term
|
||||
Yap_StringToTerm(char *s,Term *tp)
|
||||
{
|
||||
CACHE_REGS
|
||||
IOSTREAM *sno = Sopenmem(&s, NULL, "r");
|
||||
Term t;
|
||||
TokEntry *tokstart;
|
||||
tr_fr_ptr TR_before_parse;
|
||||
Term tpos = TermNil;
|
||||
|
||||
if (sno == NULL)
|
||||
return FALSE;
|
||||
TR_before_parse = TR;
|
||||
tokstart = LOCAL_tokptr = LOCAL_toktide = Yap_tokenizer(sno, FALSE, &tpos);
|
||||
if (tokstart == NIL || tokstart->Tok == Ord (eot_tok)) {
|
||||
if (tp) {
|
||||
*tp = MkAtomTerm(AtomEOFBeforeEOT);
|
||||
}
|
||||
Yap_clean_tokenizer(tokstart, LOCAL_VarTable, LOCAL_AnonVarTable, LOCAL_Comments);
|
||||
Sclose(sno);
|
||||
return FALSE;
|
||||
} else if (LOCAL_ErrorMessage) {
|
||||
if (tp) {
|
||||
*tp = MkAtomTerm(Yap_LookupAtom(LOCAL_ErrorMessage));
|
||||
}
|
||||
Yap_clean_tokenizer(tokstart, LOCAL_VarTable, LOCAL_AnonVarTable, LOCAL_Comments);
|
||||
Sclose(sno);
|
||||
return FALSE;
|
||||
}
|
||||
t = Yap_Parse();
|
||||
TR = TR_before_parse;
|
||||
if (!t || LOCAL_ErrorMessage) {
|
||||
GenerateSyntaxError(tp, tokstart, sno, MkAtomTerm(Yap_LookupAtom(LOCAL_ErrorMessage)) PASS_REGS);
|
||||
Yap_clean_tokenizer(tokstart, LOCAL_VarTable, LOCAL_AnonVarTable, LOCAL_Comments);
|
||||
Sclose(sno);
|
||||
return FALSE;
|
||||
}
|
||||
Yap_clean_tokenizer(tokstart, LOCAL_VarTable, LOCAL_AnonVarTable, LOCAL_Comments);
|
||||
Sclose(sno);
|
||||
return t;
|
||||
}
|
||||
|
||||
|
||||
Int
|
||||
Yap_FirstLineInParse (void)
|
||||
{
|
||||
@@ -748,10 +705,6 @@ p_disable_char_conversion( USES_REGS1 )
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < MaxStreams; i++) {
|
||||
if (!(Stream[i].status & Free_Stream_f))
|
||||
Stream[i].stream_wgetc_for_read = Stream[i].stream_wgetc;
|
||||
}
|
||||
CharConversionTable = NULL;
|
||||
return(TRUE);
|
||||
}
|
||||
@@ -923,8 +876,6 @@ p_write_string( USES_REGS1 )
|
||||
void
|
||||
Yap_InitIOPreds(void)
|
||||
{
|
||||
if (!Stream)
|
||||
Stream = (StreamDesc *)Yap_AllocCodeSpace(sizeof(StreamDesc)*MaxStreams);
|
||||
/* here the Input/Output predicates */
|
||||
Yap_InitCPred ("$set_read_error_handler", 1, p_set_read_error_handler, SafePredFlag|SyncPredFlag);
|
||||
Yap_InitCPred ("$get_read_error_handler", 1, p_get_read_error_handler, SafePredFlag|SyncPredFlag);
|
||||
|
||||
@@ -233,23 +233,24 @@ static Term
|
||||
float_send(char *s, int sign)
|
||||
{
|
||||
GET_LD
|
||||
Float f = (Float)atof(s);
|
||||
Float f = (Float)(sign*atof(s));
|
||||
printf("buf=%s && f= %f\n", s, f);
|
||||
#if HAVE_ISFINITE
|
||||
if (truePrologFlag(PLFLAG_ISO)) { /* iso */
|
||||
if (!isfinite(f)) {
|
||||
LOCAL_ErrorMessage = "Float overflow while scanning";
|
||||
return(MkEvalFl(0.0));
|
||||
return(MkEvalFl(f));
|
||||
}
|
||||
}
|
||||
#elif HAVE_FINITE
|
||||
if (truePrologFlag(PLFLAG_ISO)) { /* iso */
|
||||
if (!finite(f)) {
|
||||
LOCAL_ErrorMessage = "Float overflow while scanning";
|
||||
return(MkEvalFl(0.0));
|
||||
return(MkEvalFl(f));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return (MkEvalFl(f*sign));
|
||||
return (MkEvalFl(f));
|
||||
}
|
||||
|
||||
/* we have an overflow at s */
|
||||
|
||||
Reference in New Issue
Block a user