From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: strange cursor in nested containers
Date: Mon, 8 May 2023 22:56:30 -0500 [thread overview]
Message-ID: <u3cg9c$5ppl$1@dont-email.me> (raw)
In-Reply-To: 9a1c3ba5-d5ae-41d3-9eab-2b8cd941bc66n@googlegroups.com
It's not required to detect such cursors because it is expensive to do so
perfectly (essentially, each cursor has to be controlled and one has to keep
a list of them associated with the container). There are imperfect solutions
which are likely to be "good enough" in practice, but they still have a
(small) cost which may be an issue for some uses. Thus, most implementers
don't use them. I know the original GNAT containers had a debugging version
that included such checks, but I don't know if they still exist or how one
would enable them if they do.
Randy.
"Mario Blunk" <mario.blunk.gplus@gmail.com> wrote in message
news:9a1c3ba5-d5ae-41d3-9eab-2b8cd941bc66n@googlegroups.com...
>> > How could I solve the problem ? Not using "rename" ? Using an aliased
>> > access type as John Barnes suggests in Ada2005 on page 275 ?
>> You have to avoid calling Element. Since you have a cursor, you can call
>> Query_Element, which should pass the actual element to the procedure you
>> supply.
>
> Right, that solves the problem. For those interested please find a
> comparison here:
>
> 1. The demo with a dangling (dangerous) cursor:
> https://github.com/Blunk-electronic/ada_training/blob/master/src/containers/demo/nested/nest_1.adb
>
> And the demo with the issue solved properly:
> https://github.com/Blunk-electronic/ada_training/blob/master/src/containers/demo/nested/nest_2.adb
>
> Still the question remains, why such a dangling cursor is not detected at
> runtime.
next prev parent reply other threads:[~2023-05-09 3:56 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-19 7:09 strange cursor in nested containers Mario Blunk
2023-04-19 15:07 ` Simon Wright
2023-04-20 5:15 ` Egil H H
2023-04-20 5:33 ` Egil H H
2023-04-20 14:59 ` Simon Wright
2023-04-20 15:28 ` Mario Blunk
2023-04-22 9:33 ` Randy Brukardt
2023-04-22 17:04 ` Mario Blunk
2023-04-22 18:33 ` Jeffrey R.Carter
2023-04-25 7:30 ` Mario Blunk
2023-05-09 3:56 ` Randy Brukardt [this message]
2023-05-09 8:36 ` Jeffrey R.Carter
2023-05-09 8:49 ` Dmitry A. Kazakov
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox