comp.lang.ada
 help / color / mirror / Atom feed
From: "Jeffrey R. Carter" <spam.jrcarter.not@spam.not.acm.org>
Subject: Re: gcc-7 breaks unsized C array bindings
Date: Sun, 27 Aug 2017 09:57:07 +0200
Date: 2017-08-27T09:57:07+02:00	[thread overview]
Message-ID: <onttof$u32$1@dont-email.me> (raw)
In-Reply-To: <d3d91481-51e4-4746-be5f-84f882d4b596@googlegroups.com>

On 08/27/2017 09:16 AM, Shark8 wrote:
> On Friday, August 25, 2017 at 2:03:08 AM UTC-6, ytomino wrote:
>>
>> Ada binding:
>>
>>   unsized_C_array : array (Interfaces.C.size_t) of Interfaces.C.int
>>      with Import, Convention => C, External_Name => "unsized_C_array";
> 
> This creates an array of exactly 0..size_t'last elements -- where size_t'last is at least Integer'Pred(2**16) -- this is quite obviously /NOT/ what you want, and the source of your Storage_Error (as each unsized_C_array takes up so much space).

No, because of Import, it should expect the object to be created by something 
else and should simply make this another name for it. If it is allocating space 
for this object, then that should be a compiler error.

I've done more interfacing with C than I would like, but I've never encountered 
this construct, so I've been reluctant to comment. A lot will depend on how the 
construct is used in the Ada. Is it simply passed to C functions, or are 
components actually accessed by indices?

-- 
Jeff Carter
"No one is to stone anyone until I blow this whistle,
do you understand? Even--and I want to make this
absolutely clear--even if they do say, 'Jehovah.'"
Monty Python's Life of Brian
74


  reply	other threads:[~2017-08-27  7:57 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-25  8:03 gcc-7 breaks unsized C array bindings ytomino
2017-08-27  7:16 ` Shark8
2017-08-27  7:57   ` Jeffrey R. Carter [this message]
2017-08-30 21:27 ` Simon Wright
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox