https://gcc.gnu.org/g:0a71f5b5ca5bac57c660f563940b8baeb3552870

commit r15-6641-g0a71f5b5ca5bac57c660f563940b8baeb3552870
Author: Piotr Trojanek <troja...@adacore.com>
Date:   Fri Dec 20 00:09:15 2024 +0100

    ada: Improve protection against wrong use from GDB
    
    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.

Diff:
---
 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 f45c32356a90..6d0f2c87017a 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");

Reply via email to