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);