From 2251d55857c950cebaa5fe331b01b5ab220b03b4 Mon Sep 17 00:00:00 2001 From: Mariusz Glebocki Date: Mon, 9 Dec 2019 23:59:27 +0100 Subject: [PATCH] ColorScheme: fix stack-use-after-scope detected by ASAN --- src/ColorScheme.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/ColorScheme.cpp b/src/ColorScheme.cpp index ff212b7e..39eedb29 100644 --- a/src/ColorScheme.cpp +++ b/src/ColorScheme.cpp @@ -310,12 +310,13 @@ ColorEntry ColorScheme::colorEntry(int index, uint randomSeed) const const double maxLightness = qMin(baseLightness + range.lightness / 2.0, MaxLightness); // Use triangular distribution with peak at L=50.0. // Dark and very light colors are less distinguishable. - const auto lightnessIntervals = (minLightness < 50.0 && 50.0 < maxLightness) - ? std::initializer_list{minLightness, 50.0, maxLightness} - : std::initializer_list{minLightness, maxLightness}; static const auto lightnessWeightsFunc = [](double v) { return 50.0 - qAbs(v - 50.0); }; - std::piecewise_linear_distribution<> lightnessDistribution(lightnessIntervals, - lightnessWeightsFunc); + std::piecewise_linear_distribution<> lightnessDistribution; + if (minLightness < 50.0 && 50.0 < maxLightness) { + lightnessDistribution = std::piecewise_linear_distribution<>({minLightness, 50.0, maxLightness}, lightnessWeightsFunc); + } else { + lightnessDistribution = std::piecewise_linear_distribution<>({minLightness, maxLightness}, lightnessWeightsFunc); + } const double lightness = qFuzzyCompare(minLightness, maxLightness) ? baseLightness : lightnessDistribution(randomEngine);