https://gcc.gnu.org/g:4c341cfdf9de2156c7b09f31b8128a8b388a5a3d

commit r16-9134-g4c341cfdf9de2156c7b09f31b8128a8b388a5a3d
Author: Steve Baird <[email protected]>
Date:   Mon May 18 14:55:38 2026 -0700

    ada: Null pointer dereference in Adjust for bounded indefinite holders.
    
    In the Adjust procedure for 
Ada.Containers.Bounded_Indefinite_Holders.Holder,
    check to see whether the holder is empty before trying to copy its
    (possibly nonexistent) element value.
    
    gcc/ada/ChangeLog:
    
            * libgnat/a-cbinho.adb (Adjust): Avoid null pointer dereference.

Diff:
---
 gcc/ada/libgnat/a-cbinho.adb | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/gcc/ada/libgnat/a-cbinho.adb b/gcc/ada/libgnat/a-cbinho.adb
index 8949bfe4c5dc..5c5a8ed4139a 100644
--- a/gcc/ada/libgnat/a-cbinho.adb
+++ b/gcc/ada/libgnat/a-cbinho.adb
@@ -48,8 +48,10 @@ package body Ada.Containers.Bounded_Indefinite_Holders is
    overriding procedure Adjust (Container : in out Holder) is
    begin
       Container.Handle := Create_Subpool (The_Storage_Pool, Container);
-      Container.Element :=
-        new (Container.Handle) Element_Type'(Container.Element.all);
+      if Container.Element /= null then
+         Container.Element :=
+           new (Container.Handle) Element_Type'(Container.Element.all);
+      end if;
    end Adjust;
 
    ------------

Reply via email to