From: Simon Wright <simon.j.wright@amsjv.com>
Subject: Re: Joint Strike Fighter
Date: 30 Nov 2001 16:26:19 +0000
Date: 2001-11-30T16:26:19+00:00 [thread overview]
Message-ID: <x7v667sb4yc.fsf@galadriel.frlngtn.gecm.com> (raw)
In-Reply-To: odNN7.43847$xS6.73869@www.newsranger.com
Ted Dennison<dennison@telepath.com> writes:
> If it took up more than a register I'd say you have a legitimate
> gripe with your compiler vendor. However, you definitely should use
> one of the forms gauranteed to pass by reference if you *need* it
> passed that way for some reason. If you just want it to do the most
> efficient thing (which is the ususal rationale I hear from the C
> refugees), just let the compiler do it.
This was the bug report:
I have a (private) type Socket:
type Socket is record
Fd : Integer; -- -1 => socket is closed
end record;
and a procedure Close:
procedure Close (The_Socket : in out Socket) is
Fd : Integer;
begin
Fd := The_Socket.Fd;
The_Socket.Fd := -1; -- indicate that The_Socket is now closed
if Close (Fd) < 0 then -- this is an import of the Unix close()
raise Close_Error;
end if;
end Close;
GNAT uses copy semantics here, so if the exception occurs the actual
parameter doesn't get altered and still has a valid file descriptor,
leading to confusion downstream.
so making Socket limited would have done as well (I can now see no
reason why I shouldn't have done that .. this was a while back, may
have been a reason at the time). Anyway, it really needed to be by
reference!
--
Simon Wright Email: simon.j.wright@amsjv.com
Alenia Marconi Systems Voice: +44(0)23 9270 1778
Integrated Systems Division FAX: +44(0)23 9270 1800
next prev parent reply other threads:[~2001-11-30 16:26 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-10-29 4:55 Joint Strike Fighter Richard Riehle
2001-10-29 11:11 ` Ian
2001-10-31 6:38 ` Richard Riehle
2001-10-31 13:38 ` David Botton
2001-10-31 16:15 ` Wes Groleau
2001-10-31 16:25 ` Marin David Condic
2001-11-01 4:44 ` JF Harrison
2001-11-01 14:41 ` Marin David Condic
2001-11-03 16:58 ` Richard Riehle
2001-11-03 18:52 ` Jeffrey Carter
2001-11-05 15:30 ` Ted Dennison
2001-11-06 2:07 ` Jeffrey Carter
2001-11-06 16:46 ` Rex Reges
2001-11-06 18:17 ` Marin David Condic
2001-11-06 19:07 ` Larry Kilgallen
2001-11-06 21:19 ` Rex Reges
2001-11-06 23:01 ` Larry Kilgallen
2001-11-08 14:55 ` Rex Reges
[not found] ` <Wa+tfCvHgQXH@eisner.e <3BEA9CED.8C6BF839@reges.org>
2001-11-08 15:43 ` Ian Wild
2001-11-08 22:18 ` Rex Reges
2001-11-22 6:25 ` David Thompson
2001-11-08 16:23 ` Larry Kilgallen
2001-11-08 13:53 ` Marc A. Criley
2001-11-08 22:15 ` Rex Reges
2001-11-09 12:44 ` Marc A. Criley
2001-11-09 15:41 ` Ted Dennison
2001-11-09 15:35 ` Ted Dennison
2001-11-10 6:56 ` john flynn
2001-11-04 1:08 ` David Botton
2001-11-05 14:59 ` Marin David Condic
2001-11-01 14:55 ` Ted Dennison
2001-11-01 21:47 ` P Norby
2001-11-02 17:02 ` P Norby
[not found] ` <003301c163c0$289f8c60$45d82c41@vaio>
2001-11-02 19:54 ` JF Harrison
[not found] ` <002a01c163d8$25bb4440$2702a8c0@WorkGroup>
2001-11-02 20:40 ` JF Harrison
2001-11-01 11:38 ` Ian
2001-11-01 14:51 ` Marin David Condic
2001-11-02 9:08 ` John McCabe
2001-11-02 16:16 ` Ian
2001-11-02 17:04 ` John McCabe
2001-11-29 16:48 ` Matthew Heaney
2001-11-29 17:12 ` Marin David Condic
2001-11-30 12:49 ` Simon Wright
2001-11-30 14:46 ` Marin David Condic
2001-11-30 16:37 ` Jeffrey Carter
2001-11-30 15:03 ` Ted Dennison
2001-11-30 16:26 ` Simon Wright [this message]
2001-11-30 16:39 ` Ted Dennison
2001-11-30 17:08 ` Pat Rogers
2001-11-30 22:53 ` Chad R. Meiners
2001-12-01 8:08 ` Simon Wright
2001-10-29 15:02 ` Marin David Condic
2001-10-29 17:55 ` Paul A Storm
2001-11-01 4:46 ` Richard Riehle
2001-11-02 20:03 ` Dirk Craeynest
2001-11-07 3:57 ` Vincent Marciante
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox