sc/source/core/data/colorscale.cxx |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

New commits:
commit 7a3ce14a4444d4a464676fe54a91169c215cd0dc
Author:     Markus Mohrhard <markus.mohrh...@googlemail.com>
AuthorDate: Thu Aug 14 22:59:34 2025 +0800
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Thu Aug 14 21:37:12 2025 +0200

    prevent crash during colorscale calculation
    
    This should fix 
https://crashreport.libreoffice.org/stats/signature/static%20double%20%60anonymous%20namespace'::GetPercentile(const%20class%20std::vector%3Cdouble,std::allocator%3Cdouble%3E%20%3E%20&%20const,%20double)
    
    Change-Id: Ifb4cc3a8120e9f85eb2029e88268e11f4ae2526a
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189613
    Tested-by: Jenkins
    Reviewed-by: Markus Mohrhard <markus.mohrh...@googlemail.com>
    (cherry picked from commit 9d03d31dabc31902be18aa6b4905b155d06e3afa)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189619
    Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org>

diff --git a/sc/source/core/data/colorscale.cxx 
b/sc/source/core/data/colorscale.cxx
index 736f2c76582d..1690b66918af 100644
--- a/sc/source/core/data/colorscale.cxx
+++ b/sc/source/core/data/colorscale.cxx
@@ -613,13 +613,15 @@ double GetPercentile( const std::vector<double>& rArray, 
double fPercentile )
     SAL_WARN_IF(fPercentile < 0, "sc", "negative percentile");
     if (fPercentile < 0)
         return rArray.front();
-    assert(fPercentile <= 1);
+
+    fPercentile = std::min(1.0, fPercentile);
+
     size_t nSize = rArray.size();
     double fFloor = ::rtl::math::approxFloor(fPercentile * (nSize-1));
     size_t nIndex = static_cast<size_t>(fFloor);
     double fDiff = fPercentile * (nSize-1) - fFloor;
     std::vector<double>::const_iterator iter = rArray.begin() + nIndex;
-    if (fDiff == 0.0)
+    if (fDiff == 0.0 || nIndex == nSize - 1)
         return *iter;
     else
     {

Reply via email to