comp.lang.ada
 help / color / mirror / Atom feed
* Error: allocation from empty storage pool
@ 2018-07-12  9:50 Alejandro R. Mosteo
  2018-07-12 11:41 ` Simon Wright
  0 siblings, 1 reply; 5+ messages in thread
From: Alejandro R. Mosteo @ 2018-07-12  9:50 UTC (permalink / raw)


In a library I'm trying to have all allocations done from user-specified 
storage pools. There is no restriction on using the heap, as long as it 
comes from a user pool (that can default to the regular heap, of course).

The idea was then to use "pragma Default_Storage_Pool (null)" at the 
library root to ensure no use of default allocators, and wherever needed 
provide facilities to get a pool from the user.

However, this test fails:

---8<---

pragma Restrictions (No_Secondary_Stack); -- Just to be sure in this ex.
pragma Default_Storage_Pool (null);

procedure Anon is

    type Holder is record
       I : aliased Integer;
    end record;

    type Ref (Elem : access constant Integer) is limited null record;

    function To_Ref (Hold : aliased Holder) return Ref is
      (Elem => Hold.I'Access); -- Error in subject here

begin
    null;
end Anon;

---8<---

There's actually no allocation being made, and I could have a Holder 
variable in the stack, and take a reference, and still no pool would be 
used at all.

So it seems this pragma is too naïve. To make it into questions:

Is this the pragma expected behavior or a particularity of gnat? Is the 
approach reasonable? This is my first attempt at working in a 
"restricted" Ada environment so I don't really have a clear idea of the 
preferred way to do what I want. Also, I'd like if possible to avoid 
making everything generic on the user pool.

Thanks,
Álex.


^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-07-13  8:02 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-12  9:50 Error: allocation from empty storage pool Alejandro R. Mosteo
2018-07-12 11:41 ` Simon Wright
2018-07-12 12:14   ` Alejandro R. Mosteo
2018-07-12 21:08     ` Randy Brukardt
2018-07-13  8:02       ` Alejandro R. Mosteo

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