From 63817939eccb1a4954f4379f4d5694c8327b1b63 Mon Sep 17 00:00:00 2001 From: Dave Brown Date: Mon, 11 Nov 2019 13:09:28 +0000 Subject: [PATCH] Enforce value params with sysflag [1] are read-only. --- src/compiler/OPB.Mod | 8 ++------ src/runtime/Files.Mod | 2 +- 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/compiler/OPB.Mod b/src/compiler/OPB.Mod index bb7ba725..378ea165 100755 --- a/src/compiler/OPB.Mod +++ b/src/compiler/OPB.Mod @@ -36,13 +36,9 @@ MODULE OPB; (* RC 6.3.89 / 21.2.94 *) (* object model 17.1.93 *) node^.obj := obj; node^.typ := obj^.typ; (* Array and record value parameters with copy disabled are readonly *) - (* - IF (obj.mode = OPT.Var) - & (obj.typ.comp IN {OPT.Array, OPT.DynArr}) - & (obj.typ.sysflag # 0) THEN + IF (obj.mode = OPT.Var) & (obj.typ.comp IN {OPT.Array, OPT.DynArr}) & (obj.typ.sysflag # 0) THEN node.readonly := TRUE; - END ; - *) + END; RETURN node END NewLeaf; diff --git a/src/runtime/Files.Mod b/src/runtime/Files.Mod index a702ffee..b12e60bb 100755 --- a/src/runtime/Files.Mod +++ b/src/runtime/Files.Mod @@ -461,7 +461,7 @@ MODULE Files; (* J. Templ 1.12. 89/12.4.95 Oberon files mapped onto Unix files r.offset := offset + 1; r.res := 0 END Write; - PROCEDURE WriteBytes* (VAR r: Rider; VAR x: ARRAY OF SYSTEM.BYTE; n: LONGINT); + PROCEDURE WriteBytes* (VAR r: Rider; x: ARRAY [1] OF SYSTEM.BYTE; n: LONGINT); VAR xpos, min, restInBuf, offset: LONGINT; buf: Buffer; BEGIN IF n > LEN(x) THEN IdxTrap END;