with Ada.Containers.Indefinite_Holders;
with Ada.Text_IO; use Ada.Text_IO;
procedure Holder_Leak is
use Ada.Containers;
type Indef is array (Integer range <>) of Integer;
package Holders is new Indefinite_Holders (Indef);
type Def is new Holders.Holder with null record;
-- This wrapper type is necessary for the leak to manifest
type Outer is record
Inner : Def;
end record;
procedure Eat (O : Outer) is
begin
for I of O.Inner.Constant_Reference loop
-- Using .Element instead there is no leak
Put_Line (I'Img);
end loop;
end Eat;
begin
for I in 1 .. 666 loop
Eat ((Inner => To_Holder ((1, 2, 3, 4, 5))));
end loop;
end Holder_Leak;