From bbfe55a8d0a40eda2df8af0383c9175791377eb7 Mon Sep 17 00:00:00 2001 From: whitequark Date: Tue, 9 Jun 2020 11:05:35 +0000 Subject: cxxrtl: fix two buggy split_by functions. --- backends/cxxrtl/cxxrtl_backend.cc | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'backends/cxxrtl/cxxrtl_backend.cc') diff --git a/backends/cxxrtl/cxxrtl_backend.cc b/backends/cxxrtl/cxxrtl_backend.cc index 2646f9371..4c04a2f14 100644 --- a/backends/cxxrtl/cxxrtl_backend.cc +++ b/backends/cxxrtl/cxxrtl_backend.cc @@ -474,14 +474,16 @@ std::vector split_by(const std::string &str, const std::string &sep std::vector result; size_t prev = 0; while (true) { - size_t curr = str.find_first_of(sep, prev + 1); - if (curr > str.size()) - curr = str.size(); - if (curr > prev + 1) - result.push_back(str.substr(prev, curr - prev)); - if (curr == str.size()) + size_t curr = str.find_first_of(sep, prev); + if (curr == std::string::npos) { + std::string part = str.substr(prev); + if (!part.empty()) result.push_back(part); break; - prev = curr; + } else { + std::string part = str.substr(prev, curr - prev); + if (!part.empty()) result.push_back(part); + prev = curr + 1; + } } return result; } -- cgit v1.2.3