aboutsummaryrefslogtreecommitdiff
path: root/audio/rsgain/files/patch-src_scan.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'audio/rsgain/files/patch-src_scan.cpp')
-rw-r--r--audio/rsgain/files/patch-src_scan.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/audio/rsgain/files/patch-src_scan.cpp b/audio/rsgain/files/patch-src_scan.cpp
new file mode 100644
index 000000000000..3d9dbb23b23f
--- /dev/null
+++ b/audio/rsgain/files/patch-src_scan.cpp
@@ -0,0 +1,16 @@
+Fix a segfault when calculating album loudness.
+
+PR: 278838
+Regressed by: https://github.com/complexlogic/rsgain/commit/63e87a4f7d3b5c816eab630fba41ba9a63b82519
+
+--- src/scan.cpp.orig 2024-02-25 17:47:20 UTC
++++ src/scan.cpp
+@@ -639,7 +639,7 @@ void ScanJob::calculate_album_loudness()
+ std::vector<ebur128_state*> states(nb_states);
+ for (const Track &track : tracks)
+ if (track.result.track_loudness != -HUGE_VAL)
+- states.emplace_back(track.ebur128.get());
++ states[(size_t) (&track - &tracks[0])] = track.ebur128.get();
+
+ if (ebur128_loudness_global_multiple(states.data(), states.size(), &album_loudness) != EBUR128_SUCCESS)
+ album_loudness = config.target_loudness;