aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2022-06-04 09:14:37 +0200
committerTristan Gingold <tgingold@free.fr>2022-06-04 16:27:50 +0200
commit92900fa26ec56e6e71ff2f9289f0a1f43a94764f (patch)
tree1698f0ae57c1688b7b3d58f05a11e13a73e13356 /src/vhdl
parent3b4ef2e843e7bead1f05a2045627583916807374 (diff)
downloadghdl-92900fa26ec56e6e71ff2f9289f0a1f43a94764f.tar.gz
ghdl-92900fa26ec56e6e71ff2f9289f0a1f43a94764f.tar.bz2
ghdl-92900fa26ec56e6e71ff2f9289f0a1f43a94764f.zip
vhdl-sem_types: avoid a crash on empty records if forced analysis
Diffstat (limited to 'src/vhdl')
-rw-r--r--src/vhdl/vhdl-sem_types.adb10
1 files changed, 9 insertions, 1 deletions
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