diff --git a/src/btop_tools.cpp b/src/btop_tools.cpp index 23ea8ae..e9bfc2c 100644 --- a/src/btop_tools.cpp +++ b/src/btop_tools.cpp @@ -144,15 +144,17 @@ namespace Fx { string uncolor(const string& s) { string out = s; for (size_t offset = 0, start_pos = 0, end_pos = 0;;) { - start_pos = out.find('\x1b', offset); + start_pos = (offset == 0) ? out.find('\x1b') : offset; if (start_pos == string::npos) break; offset = start_pos + 1; end_pos = out.find('m', offset); if (end_pos == string::npos) break; - else if (auto next_pos = out.find('\x1b', offset); not isdigit(out[end_pos - 1]) or end_pos > next_pos) - continue; + else if (auto next_pos = out.find('\x1b', offset); not isdigit(out[end_pos - 1]) or end_pos > next_pos) { + offset = next_pos; + continue; + } out.erase(start_pos, (end_pos - start_pos)+1); offset = 0;