From: Piotr Trojanek <[email protected]>
A code cleanup in routine intended to be used from DGB, suggested by running
GNATcheck rule Boolean_Negations. However, this code can be tuned to protect
against more illegal uses.
gcc/ada/ChangeLog:
* exp_disp.adb (Write_DT): Add guards that prevent crashes on illegal
node numbers.
Tested on x86_64-pc-linux-gnu, committed on master.
---
gcc/ada/exp_disp.adb | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/gcc/ada/exp_disp.adb b/gcc/ada/exp_disp.adb
index f45c32356a9..6d0f2c87017 100644
--- a/gcc/ada/exp_disp.adb
+++ b/gcc/ada/exp_disp.adb
@@ -8674,9 +8674,10 @@ package body Exp_Disp is
begin
-- Protect this procedure against wrong usage. Required because it will
- -- be used directly from GDB
+ -- be used directly from GDB.
- if not (Typ <= Last_Node_Id)
+ if Typ not in First_Node_Id .. Last_Node_Id
+ or else Nkind (Typ) not in N_Entity
or else not Is_Tagged_Type (Typ)
then
Write_Str ("wrong usage: Write_DT must be used with tagged types");
--
2.43.0