From 286acd933ca2b2c91f8c3c39bdbaf673797ef390 Mon Sep 17 00:00:00 2001 From: ceriel Date: Tue, 8 Sep 1987 15:35:34 +0000 Subject: [PATCH] make sure argument to open is terminated by a 0-byte --- lang/m2/libm2/PascalIO.mod | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/lang/m2/libm2/PascalIO.mod b/lang/m2/libm2/PascalIO.mod index f97ec5d31..541350d2e 100644 --- a/lang/m2/libm2/PascalIO.mod +++ b/lang/m2/libm2/PascalIO.mod @@ -32,12 +32,17 @@ IMPLEMENTATION MODULE PascalIO; head: Text; PROCEDURE Reset(VAR InputText: Text; Filename: ARRAY OF CHAR); + VAR i: CARDINAL; BEGIN doclose(InputText); getstruct(InputText); WITH InputText^ DO eof := FALSE; - fildes := Unix.open(ADR(Filename), 0); + FOR i := 0 TO HIGH(Filename) DO + buf[i+1] := Filename[i]; + END; + buf[HIGH(Filename)+2] := 0C; + fildes := Unix.open(ADR(buf), 0); IF fildes < 0 THEN Traps.Message("could not open input file"); HALT; @@ -50,12 +55,17 @@ IMPLEMENTATION MODULE PascalIO; END Reset; PROCEDURE Rewrite(VAR OutputText: Text; Filename: ARRAY OF CHAR); + VAR i: CARDINAL; BEGIN doclose(OutputText); getstruct(OutputText); WITH OutputText^ DO eof := FALSE; - fildes := Unix.creat(ADR(Filename), 666B); + FOR i := 0 TO HIGH(Filename) DO + buf[i+1] := Filename[i]; + END; + buf[HIGH(Filename)+2] := 0C; + fildes := Unix.creat(ADR(buf), 666B); IF fildes < 0 THEN Traps.Message("could not open output file"); HALT; -- 2.34.1