sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx |   68 
++--------
 sc/source/ui/inc/RandomNumberGeneratorDialog.hxx               |    5 
 sc/source/ui/view/dbfunc.cxx                                   |    2 
 3 files changed, 18 insertions(+), 57 deletions(-)

New commits:
commit cbaabd5f51ae0a5deaaa4edf78ddd4e1ac8faf48
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Sun Mar 23 10:00:43 2025 +0000
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Sun Mar 23 13:08:30 2025 +0100

    cid#1645100 Big parameter passed by value
    
    and
    
    cid#1645099 Big parameter passed by value
    cid#1645097 Big parameter passed by value
    cid#1645096 Big parameter passed by value
    cid#1645095 Big parameter passed by value
    cid#1645094 Big parameter passed by value
    cid#1645093 Big parameter passed by value
    cid#1645090 Big parameter passed by value
    cid#1645087 Big parameter passed by value
    cid#1645084 Big parameter passed by value
    
    Change-Id: Ib81c9d99bdba61bb7354fa9babd710073ead9d90
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183243
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>

diff --git a/sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx 
b/sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx
index 9b43f462b194..96a324c7fad8 100644
--- a/sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx
+++ b/sc/source/ui/StatisticsDialogs/RandomNumberGeneratorDialog.cxx
@@ -187,108 +187,68 @@ void 
ScRandomNumberGeneratorDialog::SelectGeneratorAndGenerateNumbers()
         case DIST_UNIFORM:
         {
             std::uniform_real_distribution<> distribution(parameter1, 
parameter2);
-            auto rng = [&distribution, seed]() mutable
-            {
-                return distribution(seed);
-            };
-            GenerateNumbers(rng, STR_DISTRIBUTION_UNIFORM_REAL, 
aDecimalPlaces);
+            GenerateNumbers(distribution, seed, STR_DISTRIBUTION_UNIFORM_REAL, 
aDecimalPlaces);
             break;
         }
         case DIST_UNIFORM_INTEGER:
         {
             std::uniform_int_distribution<sal_Int64> 
distribution(parameterInteger1, parameterInteger2);
-            auto rng = [&distribution, seed]() mutable
-            {
-                return distribution(seed);
-            };
-            GenerateNumbers(rng, STR_DISTRIBUTION_UNIFORM_INTEGER, 
aDecimalPlaces);
+            GenerateNumbers(distribution, seed, 
STR_DISTRIBUTION_UNIFORM_INTEGER, aDecimalPlaces);
             break;
         }
         case DIST_NORMAL:
         {
             std::normal_distribution<> distribution(parameter1, parameter2);
-            auto rng = [&distribution, seed]() mutable
-            {
-                return distribution(seed);
-            };
-            GenerateNumbers(rng, STR_DISTRIBUTION_NORMAL, aDecimalPlaces);
+            GenerateNumbers(distribution, seed, STR_DISTRIBUTION_NORMAL, 
aDecimalPlaces);
             break;
         }
         case DIST_CAUCHY:
         {
             std::cauchy_distribution<> distribution(parameter1);
-            auto rng = [&distribution, seed]() mutable
-            {
-                return distribution(seed);
-            };
-            GenerateNumbers(rng, STR_DISTRIBUTION_CAUCHY, aDecimalPlaces);
+            GenerateNumbers(distribution, seed, STR_DISTRIBUTION_CAUCHY, 
aDecimalPlaces);
             break;
         }
         case DIST_BERNOULLI:
         {
             std::bernoulli_distribution distribution(parameter1);
-            auto rng = [&distribution, seed]() mutable
-            {
-                return distribution(seed);
-            };
-            GenerateNumbers(rng, STR_DISTRIBUTION_BERNOULLI, aDecimalPlaces);
+            GenerateNumbers(distribution, seed, STR_DISTRIBUTION_BERNOULLI, 
aDecimalPlaces);
             break;
         }
         case DIST_BINOMIAL:
         {
             std::binomial_distribution<> distribution(parameterInteger2, 
parameter1);
-            auto rng = [&distribution, seed]() mutable
-            {
-                return distribution(seed);
-            };
-            GenerateNumbers(rng, STR_DISTRIBUTION_BINOMIAL, aDecimalPlaces);
+            GenerateNumbers(distribution, seed, STR_DISTRIBUTION_BINOMIAL, 
aDecimalPlaces);
             break;
         }
         case DIST_CHI_SQUARED:
         {
             std::chi_squared_distribution<> distribution(parameter1);
-            auto rng = [&distribution, seed]() mutable
-            {
-                return distribution(seed);
-            };
-            GenerateNumbers(rng, STR_DISTRIBUTION_CHI_SQUARED, aDecimalPlaces);
+            GenerateNumbers(distribution, seed, STR_DISTRIBUTION_CHI_SQUARED, 
aDecimalPlaces);
             break;
         }
         case DIST_GEOMETRIC:
         {
             std::geometric_distribution<> distribution(parameter1);
-            auto rng = [&distribution, seed]() mutable
-            {
-                return distribution(seed);
-            };
-            GenerateNumbers(rng, STR_DISTRIBUTION_GEOMETRIC, aDecimalPlaces);
+            GenerateNumbers(distribution, seed, STR_DISTRIBUTION_GEOMETRIC, 
aDecimalPlaces);
             break;
         }
         case DIST_NEGATIVE_BINOMIAL:
         {
             std::negative_binomial_distribution<> 
distribution(parameterInteger2, parameter1);
-            auto rng = [&distribution, seed]() mutable
-            {
-                return distribution(seed);
-            };
-            GenerateNumbers(rng, STR_DISTRIBUTION_NEGATIVE_BINOMIAL, 
aDecimalPlaces);
+            GenerateNumbers(distribution, seed, 
STR_DISTRIBUTION_NEGATIVE_BINOMIAL, aDecimalPlaces);
             break;
         }
         case DIST_POISSON:
         {
             std::poisson_distribution<> distribution(parameter1);
-            auto rng = [&distribution, seed]() mutable
-            {
-                return distribution(seed);
-            };
-            GenerateNumbers(rng, STR_DISTRIBUTION_POISSON, aDecimalPlaces);
+            GenerateNumbers(distribution, seed, STR_DISTRIBUTION_POISSON, 
aDecimalPlaces);
             break;
         }
     }
 }
 
-template<class RNG>
-void ScRandomNumberGeneratorDialog::GenerateNumbers(RNG& randomGenerator, 
TranslateId pDistributionStringId, std::optional<sal_Int8> aDecimalPlaces)
+template<class DIST>
+void ScRandomNumberGeneratorDialog::GenerateNumbers(DIST& distribution, 
std::mt19937& seed, TranslateId pDistributionStringId, std::optional<sal_Int8> 
aDecimalPlaces)
 {
     OUString aUndo = ScResId(STR_UNDO_DISTRIBUTION_TEMPLATE);
     OUString aDistributionName = ScResId(pDistributionStringId);
@@ -319,9 +279,9 @@ void ScRandomNumberGeneratorDialog::GenerateNumbers(RNG& 
randomGenerator, Transl
             {
 
                 if (aDecimalPlaces)
-                    aVals.push_back(rtl::math::round(randomGenerator(), 
*aDecimalPlaces));
+                    aVals.push_back(rtl::math::round(distribution(seed), 
*aDecimalPlaces));
                 else
-                    aVals.push_back(randomGenerator());
+                    aVals.push_back(distribution(seed));
             }
 
             pDocShell->GetDocFunc().SetValueCells(aPos, aVals, true);
diff --git a/sc/source/ui/inc/RandomNumberGeneratorDialog.hxx 
b/sc/source/ui/inc/RandomNumberGeneratorDialog.hxx
index 0f890fc79936..770620bed3a8 100644
--- a/sc/source/ui/inc/RandomNumberGeneratorDialog.hxx
+++ b/sc/source/ui/inc/RandomNumberGeneratorDialog.hxx
@@ -60,9 +60,8 @@ private:
     void Init();
     void GetRangeFromSelection();
 
-    template<class RNG>
-
-    void GenerateNumbers(RNG& randomGenerator, TranslateId 
pDistributionStringId, const std::optional<sal_Int8> aDecimalPlaces);
+    template<class DIST>
+    void GenerateNumbers(DIST& distribution, std::mt19937& seed, TranslateId 
pDistributionStringId, const std::optional<sal_Int8> aDecimalPlaces);
 
     void SelectGeneratorAndGenerateNumbers();
 
commit 4fefd0c9ae772f3fc5c09bbb4e8cc489506f13da
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Sun Mar 23 09:58:24 2025 +0000
Commit:     Caolán McNamara <caolan.mcnam...@collabora.com>
CommitDate: Sun Mar 23 13:08:22 2025 +0100

    cid#1645085 Dereference null return value
    
    Change-Id: I5bb9691679a80c53a8285415dfa8ac159d0e69db
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/183242
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    Tested-by: Caolán McNamara <caolan.mcnam...@collabora.com>

diff --git a/sc/source/ui/view/dbfunc.cxx b/sc/source/ui/view/dbfunc.cxx
index 69ac967d2364..a594832b1107 100644
--- a/sc/source/ui/view/dbfunc.cxx
+++ b/sc/source/ui/view/dbfunc.cxx
@@ -456,6 +456,8 @@ void ScDBFunc::ClearAutoFilter()
     SCTAB nTab = GetViewData().GetTabNo();
 
     ScDBData* pDBData = rDoc.GetDBAtCursor(nCol, nRow, nTab, 
ScDBDataPortion::AREA);
+    if (!pDBData)
+        return;
 
     ScQueryParam aParam;
     pDBData->GetQueryParam(aParam);

Reply via email to