aboutsummaryrefslogtreecommitdiffstats
path: root/ecp5
diff options
context:
space:
mode:
authorgatecat <gatecat@ds0.me>2023-01-02 08:39:00 +0100
committergatecat <gatecat@ds0.me>2023-01-02 08:39:00 +0100
commitd210a5adeda40ac1b63b033e4a9f8c7c2217f2ef (patch)
tree21d49015ea740e8cf6f41531d8b7fd3d181d3ccc /ecp5
parent3338227ef7d10b8a35980c5274df1fdfd3098f31 (diff)
downloadnextpnr-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')
-rw-r--r--ecp5/lpf.cc19
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('#');