[binutils-gdb] Fix crash in f-typeprint.c

Tom Tromey tromey@sourceware.org
Tue Sep 23 18:41:03 GMT 2025


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=18400a9cdf6b3d84996a99697a97774f268576c2

commit 18400a9cdf6b3d84996a99697a97774f268576c2
Author: Tom Tromey <tom@tromey.com>
Date:   Sat Sep 13 13:44:10 2025 -0600

    Fix crash in f-typeprint.c
    
    I noticed a crash in f-typeprint.c that was hidden by an xfail:
    
    XFAIL: gdb.fortran/vla-array.exp: print variable length string array type (GDB internal error) (PRMS gcc/101826)
    
    I think this was introduced by commit 6594ca4a ("do not handle a NULL
    linebuffer in pager_file::puts") but not detected due to the xfail.
    
    It seems bad for an xfail to cover up a crash but I haven't
    investigated that.
    
    Meanwhile, this patch fixes the crash by checking for a NULL pointer
    when calling gdb_puts.
    
    Approved-by: Kevin Buettner <kevinb@redhat.com>

Diff:
---
 gdb/f-typeprint.c | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/gdb/f-typeprint.c b/gdb/f-typeprint.c
index e96d27c537e..04eca74fb2b 100644
--- a/gdb/f-typeprint.c
+++ b/gdb/f-typeprint.c
@@ -412,9 +412,11 @@ f_language::f_type_print_base (struct type *type, struct ui_file *stream,
       if (show > 0)
 	f_type_print_derivation_info (type, stream);
 
-      gdb_puts (" ", stream);
-
-      gdb_puts (type->name (), stream);
+      if (type->name () != nullptr)
+	{
+	  gdb_puts (" ", stream);
+	  gdb_puts (type->name (), stream);
+	}
 
       /* According to the definition,
 	 we only print structure elements in case show > 0.  */
@@ -432,7 +434,8 @@ f_language::f_type_print_base (struct type *type, struct ui_file *stream,
 	      gdb_puts ("\n", stream);
 	    }
 	  gdb_printf (stream, "%*sEnd Type ", level, "");
-	  gdb_puts (type->name (), stream);
+	  if (type->name () != nullptr)
+	    gdb_puts (type->name (), stream);
 	}
       break;


More information about the Gdb-cvs mailing list