From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.5-pre1 (2020-06-20) on ip-172-31-74-118.ec2.internal X-Spam-Level: X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.5-pre1 Date: 16 Dec 92 20:59:01 GMT From: dale.cts.com!jhb@nosc.mil (John Bollenbacher) Subject: Re: Language pitfalls (was Re: FORTRAN bug) Message-ID: List-Id: Harry Koehnemann (koehnema@enuxha.eas.asu.edu) wrote: : In article eachus@oddjob.mitre.org (R obert I. Eachus) writes: : >In article <1992Dec15.203558.18211@inmet.camb.inmet.com> stt@spock.camb.inme t.com (Tucker Taft) writes: : > : > Oh boy. That is a nasty one. This argues for a "friendly" : > Ada compiler giving a warning about any use of "null;" other : > than the idiomatic ones like "when others => null;" or "begin null; end;" : > (especially in a function that returns an access type ;-). : > : > Actually, there is an Ada rule which normally catches this, and : >which Robert Dewar and I have argued should be removed in Ada 9X. (A : >function must contain a return statement RM 6.5(1).) If it belongs on : >the top ten list, then the rule should stay. : : The "null;"/"return null;" was a problem with the base case in a : recursive function (null is overloaded, and even worse it's an : expression *and* a statement - isn't that something we hate about : C :). This implies there will be additional returns somewhere in : the routine and it will not be caught by the compiler. The real : problem is that there exists an execution path that can lead out : of the function without encountering a return. Seems to me the real problem is that there is a potential path out if the function which does not raise an exception but has the 'wrong' value, e.g. if mumble = null then null; end if; ... return new mumble_ptr; Thanks for pointing out this gotcha. I'd never seen it before. -- ----------------------------------------------------------------------------- - John Bollenbacher jhb@dale.cts.com - - Titan Linkabit Corp. (619) 552-9963 - - 3033 Science Park Rd. - - San Diego, Ca. 92121 - -----------------------------------------------------------------------------