summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTursiae <git@tursiae.org>2025-07-01 21:52:36 +1000
committerTursiae <git@tursiae.org>2025-07-01 21:52:36 +1000
commit032ba5383f44277e8f579ac1f8300aede7bf2cd2 (patch)
treefccb5aabbc94b59a84674009629455f4b88810d3
parentb5d302e1167cc44a24763e346a32c989dbd0601a (diff)
downloadtangara-fw-032ba5383f44277e8f579ac1f8300aede7bf2cd2.tar.gz
Use the standard library instead of a dirty hack.
-rw-r--r--src/tangara/audio/playlist.cpp11
1 files changed, 2 insertions, 9 deletions
diff --git a/src/tangara/audio/playlist.cpp b/src/tangara/audio/playlist.cpp
index d0c7e5a3..89d7e378 100644
--- a/src/tangara/audio/playlist.cpp
+++ b/src/tangara/audio/playlist.cpp
@@ -325,15 +325,8 @@ auto Playlist::nextItem(std::span<TCHAR> buf)
mutated_.reserve(line.size());
for (size_t n = 0; n < line.size(); ++n) {
if (n < (line.size() - 2) && line[n] == '%' &&
- (isdigit(line[n+1]) || (line[n+1] >= 'a' && line[n+1] <= 'f') || (line[n+1] >= 'A' && line[n+1] <= 'F')) &&
- (isdigit(line[n+2]) || (line[n+2] >= 'a' && line[n+2] <= 'f') || (line[n+2] >= 'A' && line[n+2] <= 'F'))) {
- char value = 0;
- if (isdigit(line[n+1])) value += (line[n+1] - '0') << 4;
- if (isdigit(line[n+2])) value += (line[n+2] - '0') << 0;
- if (line[n+1] >= 'a' && line[n+1] <= 'f') value += (0x0a + line[n+1] - 'a') << 4;
- if (line[n+2] >= 'a' && line[n+2] <= 'f') value += (0x0a + line[n+2] - 'a') << 0;
- if (line[n+1] >= 'A' && line[n+1] <= 'F') value += (0x0A + line[n+1] - 'A') << 4;
- if (line[n+2] >= 'A' && line[n+2] <= 'F') value += (0x0A + line[n+2] - 'A') << 0;
+ std::isxdigit(line[n+1]) && std::isxdigit(line[n+2])) {
+ char value = std::stoi(std::string(line.substr(n+1, 2)), 0, 16);
mutated_ += value;
n += 2;
} else {