diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2022-04-12 13:28:28 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-12 13:28:28 +0000 |
commit | c494f30766b569f6bebaf715ae6368c0335b0025 (patch) | |
tree | 04143be929a7be634a3cdc2a899ca3a0a1ead5ff /gcc/rust | |
parent | a5b38698aa439a935f0c0f4c55611f2173a28b57 (diff) | |
parent | 2fe4048f7f1d10ce9928eb7611179ee8ff7f17f8 (diff) | |
download | gcc-c494f30766b569f6bebaf715ae6368c0335b0025.zip gcc-c494f30766b569f6bebaf715ae6368c0335b0025.tar.gz gcc-c494f30766b569f6bebaf715ae6368c0335b0025.tar.bz2 |
Merge #1106
1106: macros: fix an infinite loop in `concat!` macro parser r=CohenArthur a=liushuyu
- Fix concat macro parser issue which caused an infinite loop when invalid token is encountered
Co-authored-by: liushuyu <liushuyu011@gmail.com>
Diffstat (limited to 'gcc/rust')
-rw-r--r-- | gcc/rust/expand/rust-macro-builtins.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/rust/expand/rust-macro-builtins.cc b/gcc/rust/expand/rust-macro-builtins.cc index 85520ec..1f41545 100644 --- a/gcc/rust/expand/rust-macro-builtins.cc +++ b/gcc/rust/expand/rust-macro-builtins.cc @@ -287,9 +287,12 @@ MacroBuiltin::concat (Location invoc_locus, AST::MacroInvocData &invoc) } else { - rust_error_at (parser.peek_current_token ()->get_locus (), + auto current_token = parser.peek_current_token (); + rust_error_at (current_token->get_locus (), "argument must be a constant literal"); has_error = true; + // Just crash if the current token can't be skipped + rust_assert (parser.skip_token (current_token->get_id ())); } parser.maybe_skip_token (COMMA); } |