fix critical bug in string iteration

Mon, 19 May 2025 15:34:30 +0200

author
Mike Becker <universe@uap-core.de>
date
Mon, 19 May 2025 15:34:30 +0200
changeset 51
49fdc2eb7cd4
parent 50
1ebab6df60c2
child 52
e9edc3bd0301

fix critical bug in string iteration

some temporaries did not materialize long enough - fixed that by assigning them to lvalues

src/heatmap.cpp file | annotate | diff | comparison | revisions
--- a/src/heatmap.cpp	Mon May 19 15:10:11 2025 +0200
+++ b/src/heatmap.cpp	Mon May 19 15:34:30 2025 +0200
@@ -33,14 +33,16 @@
 void fm::heatmap::add(const fm::settings &settings, const std::string &log) {
     using std::string_view_literals::operator ""sv;
 
-    for (auto &&line: std::views::split(log, "\n"sv)) {
+    for (auto line: std::views::split(log, "\n"sv)) {
         if (line.empty()) continue;
-        auto parts = std::views::split(line, "#"sv).begin();
-        std::string author{settings.map_author({(*parts).begin(), (*parts).end()})};
+        auto parts = std::views::split(line, "#"sv);
+        auto parts_iter = parts.begin();
+        std::string author{settings.map_author(std::string_view{*parts_iter})};
 
         int year = 0;
         unsigned int month = 0, day = 0;
-        auto date_parts = std::views::split(*++parts, "-"sv)
+        ++parts_iter;
+        auto date_parts = std::views::split(*parts_iter, "-"sv)
                           | std::views::transform([](auto r) { return std::string_view(r); })
                           | std::ranges::to<std::vector>();
         std::from_chars(date_parts[0].begin(), date_parts[0].end(), year);

mercurial