From 2c1fd2fdb3029fdd3ea3f88fe635f37b3a5fae36 Mon Sep 17 00:00:00 2001 From: "Steven G. Kargl" Date: Thu, 21 Aug 2025 14:31:16 -0700 Subject: [PATCH] Fortran: Fix NULL pointer issue. PR fortran/121627 gcc/fortran/ChangeLog: * module.cc (create_int_parameter_array): Avoid NULL pointer dereference and enhance error message. gcc/testsuite/ChangeLog: * gfortran.dg/pr121627.f90: New test. --- gcc/fortran/module.cc | 7 +++++-- gcc/testsuite/gfortran.dg/pr121627.f90 | 5 +++++ 2 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/pr121627.f90 diff --git a/gcc/fortran/module.cc b/gcc/fortran/module.cc index 070b3164ea3..e05b08bd14e 100644 --- a/gcc/fortran/module.cc +++ b/gcc/fortran/module.cc @@ -7277,10 +7277,13 @@ create_int_parameter_array (const char *name, int size, gfc_expr *value, tmp_symtree = gfc_find_symtree (gfc_current_ns->sym_root, name); if (tmp_symtree != NULL) { - if (strcmp (modname, tmp_symtree->n.sym->module) == 0) + if (tmp_symtree->n.sym->module && + strcmp (modname, tmp_symtree->n.sym->module) == 0) return; else - gfc_error ("Symbol %qs already declared", name); + gfc_error ("Symbol %qs already declared at %L conflicts with " + "symbol in %qs at %C", name, + &tmp_symtree->n.sym->declared_at, modname); } gfc_get_sym_tree (name, gfc_current_ns, &tmp_symtree, false); diff --git a/gcc/testsuite/gfortran.dg/pr121627.f90 b/gcc/testsuite/gfortran.dg/pr121627.f90 new file mode 100644 index 00000000000..c3ce218880c --- /dev/null +++ b/gcc/testsuite/gfortran.dg/pr121627.f90 @@ -0,0 +1,5 @@ +! { dg-do compile } +program real_kinds ! { dg-error "already declared at" } + use iso_fortran_env ! { dg-error "already declared at" } + i = real64 +end program real_kinds -- 2.47.2