From 582accedb77b7b957e1322966a0875491156d13a Mon Sep 17 00:00:00 2001 From: Owen Avery Date: Tue, 18 Apr 2023 00:46:59 -0400 Subject: [PATCH] gccrs: Fix infinite loop with parsing invalid generic parameters gcc/rust/ChangeLog: * parse/rust-parse-impl.h (Parser::parse_generic_params): Handle parameter parsing error. gcc/testsuite/ChangeLog: * rust/compile/issue-2125.rs: New test. Signed-off-by: Owen Avery --- gcc/rust/parse/rust-parse-impl.h | 2 ++ gcc/testsuite/rust/compile/issue-2125.rs | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 gcc/testsuite/rust/compile/issue-2125.rs diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h index 0fb96dcfb516..042018de9a22 100644 --- a/gcc/rust/parse/rust-parse-impl.h +++ b/gcc/rust/parse/rust-parse-impl.h @@ -3127,6 +3127,8 @@ Parser::parse_generic_params (EndTokenPred is_end_token) generic_params.emplace_back (std::move (param)); maybe_skip_token (COMMA); } + else + break; } // FIXME: Add reordering hint diff --git a/gcc/testsuite/rust/compile/issue-2125.rs b/gcc/testsuite/rust/compile/issue-2125.rs new file mode 100644 index 000000000000..cbcf4cb133f7 --- /dev/null +++ b/gcc/testsuite/rust/compile/issue-2125.rs @@ -0,0 +1,2 @@ +// { dg-timeout 5 } +struct S<$>; // { dg-error ".*" } -- 2.47.2