From b2824fe796d9081314ec0ead94ec74a066f3d918 Mon Sep 17 00:00:00 2001 From: ceriel Date: Tue, 24 Nov 1987 14:21:35 +0000 Subject: [PATCH] check number of locals and parameters --- lang/m2/comp/Version.c | 2 +- lang/m2/comp/type.c | 3 +++ lang/m2/comp/walk.c | 3 +++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lang/m2/comp/Version.c b/lang/m2/comp/Version.c index 9b8c4cefb..7e734b14c 100644 --- a/lang/m2/comp/Version.c +++ b/lang/m2/comp/Version.c @@ -1 +1 @@ -static char Version[] = "ACK Modula-2 compiler Version 0.28"; +static char Version[] = "ACK Modula-2 compiler Version 0.29"; diff --git a/lang/m2/comp/type.c b/lang/m2/comp/type.c index 3a9a31d79..22496d844 100644 --- a/lang/m2/comp/type.c +++ b/lang/m2/comp/type.c @@ -399,6 +399,9 @@ proc_type(result_type, parameters, n_bytes_params) tp->prc_params = parameters; tp->prc_nbpar = n_bytes_params; + if (! fit(n_bytes_params, (int) word_size)) { + error("maximum parameter byte count exceeded"); + } return tp; } diff --git a/lang/m2/comp/walk.c b/lang/m2/comp/walk.c index d148ac991..7961ec792 100644 --- a/lang/m2/comp/walk.c +++ b/lang/m2/comp/walk.c @@ -339,6 +339,9 @@ WalkProcedure(procedure) C_ret(func_res_size); if (! options['n']) WalkDefList(sc->sc_def, RegisterMessage); C_end(-sc->sc_off); + if (! fit(sc->sc_off, (int) word_size)) { + node_error(procedure->prc_body, "maximum local byte count exceeded"); + } TmpClose(); CurrVis = savevis; proclevel--; -- 2.34.1