Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas.edu!rice!uupsi!cci632!mth From: mth@cci632.UUCP (Michael Hickman) Newsgroups: comp.sys.apollo Subject: The wonderful Pascal compilier... Message-ID: <43023@cci632.UUCP> Date: 13 Nov 90 15:17:19 GMT Reply-To: mth@cci.com (Michael Hickman) Organization: none Lines: 34 I have upgraded all of our machines to 10.3. Last night a user tried running a program I had written that generates a cross reference list of nets on a PCB. After the program ran all night (should have taken < 15 mins.) I killed it figuring it needed to be recompiled under 10.3. The program compiled fine, but when I ran it, it barfed with an 'reference to illegal address (OS/MST manager)' on this: while not((this_net = nil) or ((this_net^.plusminus = net.plusminus) and (this_net^.net_name = net.net_name))) do Looks like it tried evaluating the expression after the 'or' when the pointer was nil. I changed it to this: while ((this_net <> nil) and not((this_net^.plusminus = net.plusminus) and (this_net^.net_name = net.net_name))) do It liked this, and the program ran. However, another function that uses the EXACT same line as example #1 above works fine with no changes. Compilier optimization level made no difference. It bothers me that it worked fine before, but doesn't now. I'm certainly no programming guru, so if anyone can shed some light on this, please do. Otherwise, this is just another example of Apollo's great compilier technology..... Michael T. Hickman mth@cci.com CAE/CAD Systems Administrator Computer Consoles Inc. Rochester, NY (716)482-5000 x2913