From 92900fa26ec56e6e71ff2f9289f0a1f43a94764f Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Sat, 4 Jun 2022 09:14:37 +0200 Subject: vhdl-sem_types: avoid a crash on empty records if forced analysis --- src/vhdl/vhdl-sem_types.adb | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/vhdl/vhdl-sem_types.adb b/src/vhdl/vhdl-sem_types.adb index 2c0d54636..6a37771b1 100644 --- a/src/vhdl/vhdl-sem_types.adb +++ b/src/vhdl/vhdl-sem_types.adb @@ -871,6 +871,7 @@ package body Vhdl.Sem_Types is Last_Type : Iir; El_List : constant Iir_Flist := Get_Elements_Declaration_List (Def); + Last : Integer; El : Iir; El_Type : Iir; Resolved_Flag : Boolean; @@ -889,7 +890,14 @@ package body Vhdl.Sem_Types is Composite_Found := False; Set_Signal_Type_Flag (Def, True); - for I in Flist_First .. Flist_Last (El_List) loop + if El_List = Null_Iir_Flist then + -- Avoid a crash is no elements. + Last := Flist_First - 1; + else + Last := Flist_Last (El_List); + end if; + + for I in Flist_First .. Last loop El := Get_Nth_Element (El_List, I); El_Type := Get_Subtype_Indication (El); if El_Type /= Null_Iir then -- cgit v1.2.3