From 911cb63719bed7f4ddae4f5ccdd21cc6f2c6f931 Mon Sep 17 00:00:00 2001 From: Kiran Chandramohan Date: Tue, 27 Aug 2019 23:27:11 +0100 Subject: [PATCH] [flang] Fix for segfault in invalid proc interface message The segfault happened due to a missing argument. Original-commit: flang-compiler/f18@8a4f49e86dd7969d13704ec2e5e755e1551319e6 Reviewed-on: https://github.com/flang-compiler/f18/pull/693 --- flang/lib/semantics/resolve-names.cc | 2 +- flang/test/semantics/resolve20.f90 | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/flang/lib/semantics/resolve-names.cc b/flang/lib/semantics/resolve-names.cc index ba7cf77..4b686f0 100644 --- a/flang/lib/semantics/resolve-names.cc +++ b/flang/lib/semantics/resolve-names.cc @@ -5723,7 +5723,7 @@ void ResolveNamesVisitor::SetPassArg( const auto *subprogram{interface->detailsIf()}; if (!subprogram) { Say(name, "Procedure component '%s' has invalid interface '%s'"_err_en_US, - interface->name()); + name, interface->name()); return; } std::optional passName{details.passName()}; diff --git a/flang/test/semantics/resolve20.f90 b/flang/test/semantics/resolve20.f90 index 7f0e980..57db9fb 100644 --- a/flang/test/semantics/resolve20.f90 +++ b/flang/test/semantics/resolve20.f90 @@ -63,6 +63,14 @@ module m !ERROR: PARAMETER attribute not allowed on 'bar' parameter(bar=2) + type, abstract :: t1 + integer :: i + contains + !ERROR: 'proc' must be an abstract interface or a procedure with an explicit interface + !ERROR: Procedure component 'p1' has invalid interface 'proc' + procedure(proc), deferred :: p1 + end type t1 + contains subroutine bar end subroutine -- 2.7.4