From: aschwarz1309@att.net
To: "David C. Hoos" <david.c.hoos.sr@ada95.com>
Cc: skidmarks <aschwarz@acm.org>,
"comp.lang.ada@ada.eu.org" <comp.lang.ada@ada-france.org>
Subject: Re: Ada Pointer Problem
Date: Fri, 01 Oct 2004 19:34:13 +0000
Date: 2004-10-01T19:34:13+00:00 [thread overview]
Message-ID: <mailman.149.1096660302.390.comp.lang.ada@ada-france.org> (raw)
Thanks.
However, if the object is declared in a scoped environment it would seem that the only way that a pointer error could occur would be with explicit exporting of a value. Wouldn't checking this be a more reasonable approach than rejecting benign instances (for the next iteration of Ada)?
EXAMPLE: (or am I missing the point?)
with Pkg;
package body David is
Object_Ptr : Pkg.Ptr_Type;
procedure P1( Ptr : out Pkg.Ptr_Type ) is
P1_Object_Ptr : Pkg.Ptr_Type;
procedure P1_P1( Ptr : out Pkg.Ptr_Type ) is
P1_P1_Object_Ptr : Pkg.Ptr_Type;
begin -- P1_P1
P1_P1_Object_Ptr := <local something>'Access; -- no harm so far
P1_Object_Ptr := P1_P1_Object_Ptr; -- error
Object_Ptr := P1_P1_Object_Ptr; -- error
Ptr := P1_P1_Object_Ptr; -- error
end P1_P1;
begin -- P1
P1_Object_Ptr := <local something>'Access; -- no harm so far
Object_Ptr := P1_P1_Object_ptr; -- error
Ptr := P1_Object_Ptr; -- error
end P1;
end David;
> The problem is that Object is local to procedure B, while
> X_Ptr is declared at library level (i.e., non-local).
>
> The principle is that Object exists only when procedure B is
> executing, and what is trying to be prevented is having a value
> of type X_Ptr available when Object no longer exists. This could
> happen if B were not the main procedure, but were instead a
> library-level procedure that could be called by some other
> subprogram.
>
> Since procedure B is known to the programmer to be the main
> procedure, in this case, if one is using GNAT, one could
> use the 'Unrestricted_Access attribute, instead of the 'Access
> attribute, and do what you want.
>
> ----- Original Message -----
> From: "skidmarks" <aschwarz@acm.org>
> Newsgroups: comp.lang.ada
> To: <comp.lang.ada@ada-france.org>
> Sent: Friday, October 01, 2004 10:26 AM
> Subject: Ada Pointer Problem
>
>
> > Each Ptr assignment below yields the following error message:
> >
> > -- 9. Ptr : a.X_Ptr := Object'Access;
> > -- non-local pointer cannot point to local object
> >
> > In the past, the only way that I seem to be able to fix the problem is to
> > put the pointer and assignment in global space (either in file global or
> > in a package spec). I've looked at Ada as a Second Language (Cohen) and,
> > with less diligence, at the Ada LRM but can't figure what I'm doing wrong.
> > What am I doing wrong?
> >
> > thanks
> > art
> >
> > -----------------------------------------------------------
> > -----------------------------------------------------------
> >
> > package a is
> > type X is new Integer;
> > type X_Ptr is access all X;
> > end a;
> >
> > --------------------------------------------------------
> >
> > -- Main Program
> >
> > with a;
> >
> > Procedure b is
> > subtype Y is a.X;
> > subtype Y_Ptr is a.X_Ptr;
> >
> > Object : aliased a.X;
> > Object_Y: aliased Y;
> > Ptr : a.X_Ptr := Object'Access;
> > Ptr_Y : Y_Ptr := Object'Access;
> > Ptr_OY : a.X_Ptr := Object'Access;
> > Ptr_1Y : Y_Ptr := Object'Access;
> >
> > begin -- b
> > Ptr := Object'Access;
> > Ptr_Y := Object'Access;
> > end b;
> > _______________________________________________
> > comp.lang.ada mailing list
> > comp.lang.ada@ada-france.org
> > http://www.ada-france.org/mailman/listinfo/comp.lang.ada
> >
>
next reply other threads:[~2004-10-01 19:34 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-10-01 19:34 aschwarz1309 [this message]
2004-10-02 0:47 ` Ada Pointer Problem Jeffrey Carter
2004-10-02 23:37 ` Randy Brukardt
2004-10-06 15:43 ` skidmarks
2004-10-06 18:19 ` Jeffrey Carter
2004-10-16 3:53 ` Benjamin Ketcham
2004-10-16 13:25 ` John B. Matthews
2004-10-18 18:09 ` Georg Bauhaus
2004-10-06 19:29 ` Georg Bauhaus
2004-10-07 18:45 ` skidmarks
2004-10-08 0:35 ` Jeffrey Carter
2004-10-08 12:02 ` Jean-Pierre Rosen
2004-10-08 16:58 ` Ludovic Brenta
2004-10-08 23:26 ` Björn Persson
2004-10-10 18:01 ` skidmarks
2004-10-08 14:03 ` Georg Bauhaus
2004-10-08 14:23 ` Dale Stanbrough
-- strict thread matches above, loose matches on Subject: below --
2004-10-01 15:26 skidmarks
2004-10-01 15:50 ` David C. Hoos
2004-10-01 18:15 ` Jeffrey Carter
2004-10-01 17:24 ` Ludovic Brenta
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox