diff options
author | gatecat <gatecat@ds0.me> | 2023-01-02 08:39:00 +0100 |
---|---|---|
committer | gatecat <gatecat@ds0.me> | 2023-01-02 08:39:00 +0100 |
commit | d210a5adeda40ac1b63b033e4a9f8c7c2217f2ef (patch) | |
tree | 21d49015ea740e8cf6f41531d8b7fd3d181d3ccc /ecp5/lpf.cc | |
parent | 3338227ef7d10b8a35980c5274df1fdfd3098f31 (diff) | |
download | nextpnr-d210a5adeda40ac1b63b033e4a9f8c7c2217f2ef.tar.gz nextpnr-d210a5adeda40ac1b63b033e4a9f8c7c2217f2ef.tar.bz2 nextpnr-d210a5adeda40ac1b63b033e4a9f8c7c2217f2ef.zip |
ecp5: Improve error handling for missing end-"
Signed-off-by: gatecat <gatecat@ds0.me>
Diffstat (limited to 'ecp5/lpf.cc')
-rw-r--r-- | ecp5/lpf.cc | 19 |
1 files 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('#'); |