From b6d6c4ee57653b7f35b5df6db6bfe3b610ab85e6 Mon Sep 17 00:00:00 2001 From: ceriel Date: Mon, 9 Nov 1987 11:36:45 +0000 Subject: [PATCH] changed mechanism for for-loop checking, added some trap numbers --- lang/m2/libm2/LIST | 1 - lang/m2/libm2/Makefile | 2 +- lang/m2/libm2/Traps.def | 3 +++ lang/m2/libm2/catch.c | 4 +++- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lang/m2/libm2/LIST b/lang/m2/libm2/LIST index bb10d607c..f70b0be5a 100644 --- a/lang/m2/libm2/LIST +++ b/lang/m2/libm2/LIST @@ -16,7 +16,6 @@ Semaphores.mod random.mod Strings.mod catch.c -FORchk.c Traps.mod Arguments.c LtoUset.e diff --git a/lang/m2/libm2/Makefile b/lang/m2/libm2/Makefile index 1276d8aa9..af175bcb7 100644 --- a/lang/m2/libm2/Makefile +++ b/lang/m2/libm2/Makefile @@ -11,4 +11,4 @@ all: install: -mkdir $(DEFDIR) - for i in $(SOURCES) ; do cp $$i $(DEFDIR)/$$i ; done + cp $(SOURCES) $(DEFDIR) diff --git a/lang/m2/libm2/Traps.def b/lang/m2/libm2/Traps.def index 6854bb1e6..46d34aa1b 100644 --- a/lang/m2/libm2/Traps.def +++ b/lang/m2/libm2/Traps.def @@ -7,6 +7,9 @@ DEFINITION MODULE Traps; ERRTOOMANY = 65; (* too many nested traps + handlers *) ERRNORESULT = 66; (* no RETURN from function procedure *) ERRCARDOVFL = 67; (* CARDINAL overflow *) + ERRFORLOOP = 68; (* value of FOR-loop control variable changed + in loop + *) TYPE TrapHandler = EM.TrapHandler; diff --git a/lang/m2/libm2/catch.c b/lang/m2/libm2/catch.c index 57e6ee013..2e6a4ae6d 100644 --- a/lang/m2/libm2/catch.c +++ b/lang/m2/libm2/catch.c @@ -34,6 +34,7 @@ static struct errm { { M2_TOOMANY, "too many nested traps + handlers"}, { M2_NORESULT, "no RETURN from procedure function"}, { M2_UOVFL, "cardinal overflow"}, + { M2_FORCH, "Warning: FOR-loop control variable was changed in the body"}, { -1, 0} }; @@ -70,5 +71,6 @@ _catch(trapno) *p = 0; Traps_Message(q, 0, (int) (p - q), 1); } - exit(trapno); + if (trapno != M2_FORCH) exit(trapno); + SIG(_catch); } -- 2.34.1