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>
(cherry picked from commit 18400a9cdf)
This commit is contained in:
Tom Tromey 2025-09-13 13:44:10 -06:00
parent 11f85add6d
commit 3d00b5bbb4

View file

@ -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;