From d210a5adeda40ac1b63b033e4a9f8c7c2217f2ef Mon Sep 17 00:00:00 2001 From: gatecat Date: Mon, 2 Jan 2023 08:39:00 +0100 Subject: ecp5: Improve error handling for missing end-" Signed-off-by: gatecat --- ecp5/lpf.cc | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/ecp5/lpf.cc b/ecp5/lpf.cc index 70ebfe81..4f02d22d 100644 --- a/ecp5/lpf.cc +++ b/ecp5/lpf.cc @@ -44,21 +44,22 @@ bool Arch::apply_lpf(std::string filename, std::istream &in) auto isempty = [](const std::string &str) { return std::all_of(str.begin(), str.end(), [](char c) { return isblank(c) || c == '\r' || c == '\n'; }); }; - auto strip_quotes = [](const std::string &str) { - if (str.at(0) == '"') { - NPNR_ASSERT(str.back() == '"'); - return str.substr(1, str.size() - 2); - } else { - return str; - } - }; - try { if (!in) log_error("failed to open LPF file\n"); std::string line; std::string linebuf; int lineno = 0; + auto strip_quotes = [&](const std::string &str) { + if (str.at(0) == '"') { + if (str.back() != '"') { + log_error("expected '\"' at end of string '%s' (on line %d)\n", str.c_str(), lineno); + } + return str.substr(1, str.size() - 2); + } else { + return str; + } + }; while (std::getline(in, line)) { ++lineno; size_t cstart = line.find('#'); -- cgit v1.2.3