From: ceriel Date: Mon, 2 Nov 1987 11:22:06 +0000 (+0000) Subject: changed trap messages somewhat, corrected bug in InOut, undone changes X-Git-Tag: release-5-5~3770 X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=b24e6763c36482753a6933b71a4caa8662f620f2;p=ack.git changed trap messages somewhat, corrected bug in InOut, undone changes to confarray.c --- diff --git a/lang/m2/libm2/InOut.mod b/lang/m2/libm2/InOut.mod index eb6799fa8..01eca7ab6 100644 --- a/lang/m2/libm2/InOut.mod +++ b/lang/m2/libm2/InOut.mod @@ -256,6 +256,8 @@ IMPLEMENTATION MODULE InOut ; integ := int END; IF buf[index] > " " THEN + Write(buf[index]); + Write(termCH); Traps.Message("illegal integer"); HALT; END; @@ -419,6 +421,7 @@ IMPLEMENTATION MODULE InOut ; END WriteString; BEGIN (* InOut initialization *) + unread := FALSE; WITH ibuf DO fildes := 0; bufferedcount := BUFSIZ; diff --git a/lang/m2/libm2/catch.c b/lang/m2/libm2/catch.c index 74232d21c..57e6ee013 100644 --- a/lang/m2/libm2/catch.c +++ b/lang/m2/libm2/catch.c @@ -9,12 +9,12 @@ static struct errm { { ERANGE, "range bound error"}, { ESET, "set bound error"}, { EIOVFL, "integer overflow"}, - { EFOVFL, "floating overflow"}, - { EFUNFL, "floating underflow"}, + { EFOVFL, "real overflow"}, + { EFUNFL, "real underflow"}, { EIDIVZ, "divide by 0"}, { EFDIVZ, "divide by 0.0"}, { EIUND, "undefined integer"}, - { EFUND, "undefined float"}, + { EFUND, "undefined real"}, { ECONV, "conversion error"}, { ESTACK, "stack overflow"}, diff --git a/lang/m2/libm2/confarray.c b/lang/m2/libm2/confarray.c index c85a50df4..0226a32b8 100644 --- a/lang/m2/libm2/confarray.c +++ b/lang/m2/libm2/confarray.c @@ -1,13 +1,5 @@ #include -/* Runtime handling of "value" conformant arrays. - The routine that accepts the conformant array parameter first calls - the routine new_stackptr. This routine computes a new stack pointer - for the calling routine and returns it. The new space on the stack is - large enough to store the array. - Then, it calls copy_array to do the copying. -*/ - struct descr { char *addr; int low; @@ -22,9 +14,6 @@ char * _new_stackptr(pdescr, a) register struct descr *pdescr; { - /* The parameter "a" is not used and not supplied. - It's address is the old stack-pointer. - */ unsigned int size = (((pdescr->highminlow + 1) * pdescr->size + (EM_WSIZE - 1)) & ~(EM_WSIZE - 1)); @@ -41,19 +30,20 @@ _new_stackptr(pdescr, a) } _copy_array(p, a) - register int *p; + register char *p; { - register int *q; + register char *q; register unsigned int sz; char dummy; ppdescr--; - sz = (((*ppdescr)->highminlow + 1) * (*ppdescr)->size) / EM_WSIZE; + sz = (((*ppdescr)->highminlow + 1) * (*ppdescr)->size + + (EM_WSIZE -1)) & ~ (EM_WSIZE - 1); if ((char *) &a - (char *) &dummy > 0) { - (*ppdescr)->addr = (char *) (q = &a); + (*ppdescr)->addr = q = (char *) &a; } - else (*ppdescr)->addr = (char *) (q = &a - sz); + else (*ppdescr)->addr = q = (char *) &a - sz; while (sz--) *q++ = *p++; }