Merge pull request #2130 from whitequark/cxxrtl-fix-split_by

cxxrtl: fix two buggy split_by functions
This commit is contained in:
whitequark 2020-06-09 11:59:17 +00:00 committed by GitHub
commit 3dc32490e0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 14 deletions

View File

@ -474,14 +474,16 @@ std::vector<std::string> split_by(const std::string &str, const std::string &sep
std::vector<std::string> result; std::vector<std::string> result;
size_t prev = 0; size_t prev = 0;
while (true) { while (true) {
size_t curr = str.find_first_of(sep, prev + 1); size_t curr = str.find_first_of(sep, prev);
if (curr > str.size()) if (curr == std::string::npos) {
curr = str.size(); std::string part = str.substr(prev);
if (curr > prev + 1) if (!part.empty()) result.push_back(part);
result.push_back(str.substr(prev, curr - prev));
if (curr == str.size())
break; break;
prev = curr; } else {
std::string part = str.substr(prev, curr - prev);
if (!part.empty()) result.push_back(part);
prev = curr + 1;
}
} }
return result; return result;
} }

View File

@ -136,15 +136,15 @@ class vcd_writer {
std::vector<std::string> hierarchy; std::vector<std::string> hierarchy;
size_t prev = 0; size_t prev = 0;
while (true) { while (true) {
size_t curr = hier_name.find_first_of(' ', prev + 1); size_t curr = hier_name.find_first_of(' ', prev);
if (curr > hier_name.size()) if (curr == std::string::npos) {
curr = hier_name.size(); hierarchy.push_back(hier_name.substr(prev));
if (curr > prev + 1)
hierarchy.push_back(hier_name.substr(prev, curr - prev));
if (curr == hier_name.size())
break; break;
} else {
hierarchy.push_back(hier_name.substr(prev, curr - prev));
prev = curr + 1; prev = curr + 1;
} }
}
return hierarchy; return hierarchy;
} }