From 289f8d42cb7d8a0e5948c1bec73ea7a47ad2c370 Mon Sep 17 00:00:00 2001 From: Charlotte Date: Wed, 28 Jun 2023 11:51:13 +1000 Subject: [PATCH] fmt: correct parsing of {{ and }} for brace literals --- kernel/fmt.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/kernel/fmt.cc b/kernel/fmt.cc index 0f5ebd94e..952511eeb 100644 --- a/kernel/fmt.cc +++ b/kernel/fmt.cc @@ -36,11 +36,13 @@ void Fmt::parse_rtlil(RTLIL::Cell *cell) { FmtPart part; for (size_t i = 0; i < fmt.size(); i++) { - if (fmt.substr(i, 2) == "}}") + if (fmt.substr(i, 2) == "}}") { part.str += '}'; - else if (fmt.substr(i, 2) == "{{") + ++i; + } else if (fmt.substr(i, 2) == "{{") { part.str += '{'; - else if (fmt[i] == '}') + ++i; + } else if (fmt[i] == '}') log_assert(false && "Unexpected '}' in format string"); else if (fmt[i] == '{') { if (!part.str.empty()) {