Corrected a bug where "overlapping" defines were incorrectly replaced

This commit is contained in:
paulfd 2019-09-09 15:14:09 +02:00
parent 15b557946e
commit 9da6fc6f78
2 changed files with 12 additions and 11 deletions

View file

@ -46,16 +46,15 @@ protected:
case hash("region"): numRegions++; break;
case hash("curve"): numCurves++; break;
}
// std::cout << "[" << header << "]" << '\t';
// for (auto& member: members)
// {
// std::cout << member.opcode << "=" << member.value;
// if (member.parameter)
// std::cout << " (" << (int)*member.parameter << ")";
// std::cout << ' ';
// }
// std::cout << '\n';
std::cout << "[" << header << "]" << ' ';
for (auto& member: members)
{
std::cout << member.opcode << "=" << member.value;
if (member.parameter)
std::cout << " (" << (int)*member.parameter << ")";
std::cout << ' ';
}
std::cout << '\n';
}
private:
int numRegions { 0 };

View file

@ -129,8 +129,9 @@ void sfz::Parser::readSfzFile(const std::filesystem::path& fileName, std::vector
while (findPos < tmpView.npos) {
newString.append(tmpView, lastPos, findPos - lastPos);
const auto defineEnd = tmpView.find_first_of(" \r\t\n\f\v", findPos);
const auto candidate = tmpView.substr(findPos, defineEnd - findPos);
for (auto& definePair : defines) {
std::string_view candidate = tmpView.substr(findPos, definePair.first.length());
if (candidate == definePair.first) {
newString += definePair.second;
lastPos = findPos + definePair.first.length();
@ -138,6 +139,7 @@ void sfz::Parser::readSfzFile(const std::filesystem::path& fileName, std::vector
}
}
if (lastPos <= findPos) {
newString += sfz::config::defineCharacter;
lastPos = findPos + 1;