From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: A smaller self contained test case. Was: Compiler Bug or what I'm doing wrong?
Date: Sun, 25 Jun 2006 09:59:35 +0200
Date: 2006-06-25T09:59:33+02:00 [thread overview]
Message-ID: <5v7eb8ink18v$.2y1201vcnkcc.dlg@40tude.net> (raw)
In-Reply-To: mywtb6gv7d.fsf@hod.lan.m-e-leypold.de
On 24 Jun 2006 22:22:30 +0200, M E Leypold wrote:
> I followed Barnes' advice here: "wether it is appropriate to use a
> variant or tagged type, the key consideration is mutability".
True [mutability of class instances] Handles to tagged types is another way
to have mutable class-wide.
>> procedure Get_Record is
>> F : File_Type;
>> S : Stream_Access;
>> begin
>> Open (F, Mode => In_File, Name => "tmp-bug3" );
>> S := Stream (F);
>> for I in 1 .. 400 loop
>> declare
>> R : Customer_Description renames
>> Customer_Description'Input (S);
>
> Oops. My, that is a dirty trick -- but how do I return R? Hm, yes I
> can see how that would work. Perhaps :-). I'll see how I can fit that
> into the database module.
Hey, it is not a trick, but a nice pattern! I am using it quite often, and
count it for a good style.
Anyway, the following will work as well:
procedure Get_Record is
F : File_Type;
S : Stream_Access;
R : Customer_Description;
begin
Open (F, Mode => In_File, Name => "tmp-bug3" );
S := Stream (F);
for I in 1 .. 400 loop
R := Customer_Description'Input (S);
Ada.Text_IO.Put_Line ("Read" & Integer'Image (I));
end loop;
Close (F);
end;
As far as I can tell, the bug is not in finalization. It is rather in
absence of. It seems that GNAT does *not* make it in Read when the
discriminant gets changed *by* Read. Then, later, another finalization
discovers rubbish. That never can happen when Input is used. So, it is safe
to use Input in all combinations. Just a guess.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2006-06-25 7:59 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-06-20 16:56 Compiler Bug or what I'm doing wrong? M E Leypold
2006-06-21 7:44 ` Ludovic Brenta
2006-06-21 12:29 ` M E Leypold
2006-06-21 12:46 ` Alex R. Mosteo
2006-06-21 13:23 ` M E Leypold
2006-06-22 19:10 ` Simon Wright
2006-06-23 8:24 ` Ludovic Brenta
2006-06-23 13:14 ` Alex R. Mosteo
2006-06-23 13:24 ` Alex R. Mosteo
2006-06-24 20:33 ` Simon Wright
2006-06-24 20:56 ` M E Leypold
2006-06-26 7:32 ` Ludovic Brenta
2006-06-26 11:16 ` M E Leypold
2006-06-26 12:13 ` [Ada in Debian] GtkAda and GNAT versions Ludovic Brenta
2006-06-26 12:25 ` M E Leypold
2006-06-27 20:55 ` Compiler Bug or what I'm doing wrong? Simon Wright
2006-06-27 22:26 ` Ludovic Brenta
2006-06-22 2:07 ` James Dennett
2006-06-22 6:37 ` Duncan Sands
2006-06-22 16:53 ` M E Leypold
2006-06-22 19:01 ` Pascal Obry
2006-06-23 8:37 ` M E Leypold
2006-06-22 19:05 ` Dmitry A. Kazakov
2006-06-23 4:47 ` Jeffrey R. Carter
2006-06-23 12:26 ` Stephen Leake
2006-06-23 13:11 ` Dmitry A. Kazakov
2006-06-23 13:15 ` Alex R. Mosteo
2006-06-23 9:55 ` A smaller self contained test case. Was: " M E Leypold
2006-06-23 10:03 ` M E Leypold
2006-06-23 11:04 ` And a Workaround: Was: A smaller test case / Compiler Bug M E Leypold
2006-06-23 11:12 ` Possible memory leaks when reading/writing variant records M E Leypold
2006-06-24 11:46 ` A smaller self contained test case. Was: Compiler Bug or what I'm doing wrong? Dmitry A. Kazakov
2006-06-24 12:27 ` M E Leypold
2006-06-24 12:52 ` Dmitry A. Kazakov
2006-06-24 13:53 ` M E Leypold
2006-06-24 19:58 ` Dmitry A. Kazakov
2006-06-24 20:22 ` M E Leypold
2006-06-25 7:59 ` Dmitry A. Kazakov [this message]
2006-06-25 10:51 ` M E Leypold
2006-06-26 6:22 ` Martin Dowie
2006-06-24 21:21 ` M E Leypold
2006-06-25 21:36 ` M E Leypold
2006-06-26 21:53 ` Possibly fixed in gcc 4.1.1, but bug box -- Was: Re: A smaller self contained test case M E Leypold
2006-06-27 18:24 ` Alex R. Mosteo
2006-06-27 22:58 ` M E Leypold
2006-06-28 10:32 ` Alex R. Mosteo
2006-07-03 1:38 ` Steve Whalen
2006-07-03 10:36 ` M E Leypold
2006-06-28 8:41 ` Ludovic Brenta
2006-06-28 8:51 ` Georg Bauhaus
2006-06-28 10:43 ` Alex R. Mosteo
2006-06-23 10:00 ` Compiler Bug or what I'm doing wrong? M E Leypold
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox