Guard error
Posted: Tue Jul 11, 2017 2:31 am
the member Ilya Ermakov of oberoncre report a compiler bug:https://forum.oberoncore.ru/viewtopic.php?f=127&t=6081
and Oleg report Ofront can catch such bug without problem.
the bug is not easy to find, thanks Ilya Ermakov report it. the fixup is simple.
luowy
Code: Select all
MODULE Test;
TYPE
Obj = POINTER TO RECORD END;
PROCEDURE Fun (): ANYPTR;
VAR obj: Obj;
BEGIN
NEW(obj);
RETURN obj
END Fun;
PROCEDURE Proc (VAR p: Obj);
BEGIN
p := NIL
END Proc;
PROCEDURE Do*;
BEGIN
Proc(Fun()(Obj))
END Do;
END Test.
(!)Test.Do
Code: Select all
MODULE Test;
TYPE
Obj = POINTER TO RECORD END;
PROCEDURE Fun (): [b]Obj;[/b]
VAR obj: Obj;
BEGIN
NEW(obj);
RETURN obj
END Fun;
PROCEDURE Proc (VAR p: Obj);
BEGIN
p := NIL
END Proc;
PROCEDURE Do*;
BEGIN
Proc(Fun()(Obj))
END Do;
END Test.
(!)Test.Do
Code: Select all
MODULE Test;
IMPORT SYSTEM;
TYPE
Obj = POINTER TO RECORD END;
PROCEDURE Fun(): SYSTEM.PTR;
VAR obj: Obj;
BEGIN
NEW(obj); RETURN obj;
END Fun;
PROCEDURE Proc(VAR p: Obj);
BEGIN
p := NIL;
END Proc;
PROCEDURE Do* ();
BEGIN
Proc(Fun()(Obj));
END Do;
END Test.
luowy