download.lst | 4 external/mariadb-connector-c/UnpackedTarball_mariadb-connector-c.mk | 1 external/mariadb-connector-c/c23.patch.0 | 11 -- toolkit/source/controls/table/cellvalueconversion.cxx | 49 ++++++---- toolkit/source/controls/table/cellvalueconversion.hxx | 28 ----- 5 files changed, 39 insertions(+), 54 deletions(-)
New commits: commit 84e570b237829f6ed16c10b0a9bcc0e947e57796 Author: Mike Kaganski <mike.kagan...@collabora.com> AuthorDate: Thu Sep 11 11:18:55 2025 +0500 Commit: Mike Kaganski <mike.kagan...@collabora.com> CommitDate: Thu Sep 11 11:33:39 2025 +0200 No need for shared_ptr overhead here The normalizers are owned and used only internally; their lifetime can be controlled using unique_ptr, and getValueNormalizer can return a bare pointer, instead of a boolean plus an out parameter. Change-Id: I3e4dca8dec00196a1558d6215316552efde7b906 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190786 Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com> Tested-by: Jenkins diff --git a/toolkit/source/controls/table/cellvalueconversion.cxx b/toolkit/source/controls/table/cellvalueconversion.cxx index 735fb57f7e5d..7a5ad2caa41a 100644 --- a/toolkit/source/controls/table/cellvalueconversion.cxx +++ b/toolkit/source/controls/table/cellvalueconversion.cxx @@ -75,6 +75,27 @@ double lcl_convertTimeToDays(tools::Long const i_hours, tools::Long const i_minu //= StandardFormatNormalizer +class StandardFormatNormalizer +{ +public: + virtual ~StandardFormatNormalizer() = default; + + /** converts the given <code>Any</code> into a <code>double</code> value to be fed into a number formatter + */ + virtual double convertToDouble(css::uno::Any const& i_value) const = 0; + + /** returns the format key to be used for formatting values + */ + sal_Int32 getFormatKey() const { return m_nFormatKey; } + +protected: + StandardFormatNormalizer(css::uno::Reference<css::util::XNumberFormatter> const& i_formatter, + ::sal_Int32 const i_numberFormatType); + +private: + ::sal_Int32 m_nFormatKey; +}; + StandardFormatNormalizer::StandardFormatNormalizer(Reference<XNumberFormatter> const& i_formatter, ::sal_Int32 const i_numberFormatType) : m_nFormatKey(0) @@ -278,55 +299,54 @@ bool CellValueConversion::ensureNumberFormatter() return xNumberFormatter.is(); } -bool CellValueConversion::getValueNormalizer(Type const& i_valueType, - std::shared_ptr<StandardFormatNormalizer>& o_formatter) +const StandardFormatNormalizer* CellValueConversion::getValueNormalizer(Type const& i_valueType) { auto pos = aNormalizers.find(i_valueType.getTypeName()); if (pos == aNormalizers.end()) { // never encountered this type before - o_formatter.reset(); + std::unique_ptr<StandardFormatNormalizer> o_formatter; OUString const sTypeName(i_valueType.getTypeName()); TypeClass const eTypeClass = i_valueType.getTypeClass(); if (sTypeName == ::cppu::UnoType<DateTime>::get().getTypeName()) { - o_formatter = std::make_shared<DateTimeNormalization>(xNumberFormatter); + o_formatter = std::make_unique<DateTimeNormalization>(xNumberFormatter); } else if (sTypeName == ::cppu::UnoType<css::util::Date>::get().getTypeName()) { - o_formatter = std::make_shared<DateNormalization>(xNumberFormatter); + o_formatter = std::make_unique<DateNormalization>(xNumberFormatter); } else if (sTypeName == ::cppu::UnoType<css::util::Time>::get().getTypeName()) { - o_formatter = std::make_shared<TimeNormalization>(xNumberFormatter); + o_formatter = std::make_unique<TimeNormalization>(xNumberFormatter); } else if (sTypeName == ::cppu::UnoType<sal_Bool>::get().getTypeName()) { - o_formatter = std::make_shared<BooleanNormalization>(xNumberFormatter); + o_formatter = std::make_unique<BooleanNormalization>(xNumberFormatter); } else if (sTypeName == ::cppu::UnoType<double>::get().getTypeName() || sTypeName == ::cppu::UnoType<float>::get().getTypeName()) { - o_formatter = std::make_shared<DoubleNormalization>(xNumberFormatter); + o_formatter = std::make_unique<DoubleNormalization>(xNumberFormatter); } else if ((eTypeClass == TypeClass_BYTE) || (eTypeClass == TypeClass_SHORT) || (eTypeClass == TypeClass_UNSIGNED_SHORT) || (eTypeClass == TypeClass_LONG) || (eTypeClass == TypeClass_UNSIGNED_LONG) || (eTypeClass == TypeClass_HYPER)) { - o_formatter = std::make_shared<IntegerNormalization>(xNumberFormatter); + o_formatter = std::make_unique<IntegerNormalization>(xNumberFormatter); } else { SAL_WARN("svtools.table", "unsupported type '" << sTypeName << "'!"); } - aNormalizers[sTypeName] = o_formatter; + auto& newValue = aNormalizers[sTypeName]; + newValue = std::move(o_formatter); + return newValue.get(); } else - o_formatter = pos->second; - - return bool(o_formatter); + return pos->second.get(); } //= CellValueConversion @@ -350,8 +370,7 @@ OUString CellValueConversion::convertToString(const Any& i_value) { if (ensureNumberFormatter()) { - std::shared_ptr<StandardFormatNormalizer> pNormalizer; - if (getValueNormalizer(i_value.getValueType(), pNormalizer)) + if (auto* pNormalizer = getValueNormalizer(i_value.getValueType())) { try { diff --git a/toolkit/source/controls/table/cellvalueconversion.hxx b/toolkit/source/controls/table/cellvalueconversion.hxx index 2e05707e5bab..b50c1ebf098f 100644 --- a/toolkit/source/controls/table/cellvalueconversion.hxx +++ b/toolkit/source/controls/table/cellvalueconversion.hxx @@ -26,26 +26,7 @@ namespace svt { -class StandardFormatNormalizer -{ -public: - /** converts the given <code>Any</code> into a <code>double</code> value to be fed into a number formatter - */ - virtual double convertToDouble(css::uno::Any const& i_value) const = 0; - - /** returns the format key to be used for formatting values - */ - sal_Int32 getFormatKey() const { return m_nFormatKey; } - -protected: - StandardFormatNormalizer(css::uno::Reference<css::util::XNumberFormatter> const& i_formatter, - ::sal_Int32 const i_numberFormatType); - - virtual ~StandardFormatNormalizer() {} - -private: - ::sal_Int32 m_nFormatKey; -}; +class StandardFormatNormalizer; class CellValueConversion { @@ -57,14 +38,11 @@ public: private: bool ensureNumberFormatter(); - bool getValueNormalizer(css::uno::Type const& i_valueType, - std::shared_ptr<StandardFormatNormalizer>& o_formatter); - - typedef std::unordered_map<OUString, std::shared_ptr<StandardFormatNormalizer>> NormalizerCache; + const StandardFormatNormalizer* getValueNormalizer(css::uno::Type const& i_valueType); css::uno::Reference<css::util::XNumberFormatter> xNumberFormatter; bool bAttemptedFormatterCreation; - NormalizerCache aNormalizers; + std::unordered_map<OUString, std::unique_ptr<StandardFormatNormalizer>> aNormalizers; }; } // namespace svt commit 469f5e771395df7ee2d464f4e6f4eecac466a9a8 Author: Xisco Fauli <xiscofa...@libreoffice.org> AuthorDate: Thu Sep 11 10:06:08 2025 +0200 Commit: Xisco Fauli <xiscofa...@libreoffice.org> CommitDate: Thu Sep 11 11:33:34 2025 +0200 mariadb-connector-c: upgrade to 3.3.17 c23.patch.0 has been fixed upstream Downloaded from https://dlm.mariadb.com/4441363/Connectors/c/connector-c-3.3.17/mariadb-connector-c-3.3.17-src.tar.gz Change-Id: Idf813aa383f22b8ae22ac92e23fc0ffa78050f38 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190795 Reviewed-by: Xisco Fauli <xiscofa...@libreoffice.org> Tested-by: Jenkins diff --git a/download.lst b/download.lst index 9fd0c943cc47..1b693fa14be2 100644 --- a/download.lst +++ b/download.lst @@ -482,8 +482,8 @@ LXML_TARBALL := lxml-6.0.1.tar.gz # three static lines # so that git cherry-pick # will not run into conflicts -MARIADB_CONNECTOR_C_SHA256SUM := b593fdd3d5b8964a9feec2bf57a13e6cc8f178a4fe948e89f60ede9c53d621fe -MARIADB_CONNECTOR_C_TARBALL := mariadb-connector-c-3.3.15-src.tar.gz +MARIADB_CONNECTOR_C_SHA256SUM := a5abb7331508988f7287b481c1839bd929261ce38352cd0fde6c002c300e0c01 +MARIADB_CONNECTOR_C_TARBALL := mariadb-connector-c-3.3.17-src.tar.gz # three static lines # so that git cherry-pick # will not run into conflicts diff --git a/external/mariadb-connector-c/UnpackedTarball_mariadb-connector-c.mk b/external/mariadb-connector-c/UnpackedTarball_mariadb-connector-c.mk index fb91af3e5a55..7c72bd807259 100644 --- a/external/mariadb-connector-c/UnpackedTarball_mariadb-connector-c.mk +++ b/external/mariadb-connector-c/UnpackedTarball_mariadb-connector-c.mk @@ -30,7 +30,6 @@ endif # $(OS),WNT $(eval $(call gb_UnpackedTarball_add_patches,mariadb-connector-c,\ external/mariadb-connector-c/clang-cl.patch.0 \ - external/mariadb-connector-c/c23.patch.0 \ external/mariadb-connector-c/0001-const-up-my_uca1400_collation_definitions.patch \ external/mariadb-connector-c/0001-const-up-mariadb_defaults-and-MADB_OS_CHARSET.patch \ )) diff --git a/external/mariadb-connector-c/c23.patch.0 b/external/mariadb-connector-c/c23.patch.0 deleted file mode 100644 index d19d6be4cdae..000000000000 --- a/external/mariadb-connector-c/c23.patch.0 +++ /dev/null @@ -1,11 +0,0 @@ ---- include/ma_global.h -+++ include/ma_global.h -@@ -683,7 +683,7 @@ - typedef int myf; /* Type of MyFlags in my_funcs */ - typedef char my_bool; /* Small bool */ - typedef unsigned long long my_ulonglong; --#if !defined(bool) && !defined(bool_defined) && (!defined(HAVE_BOOL) || !defined(__cplusplus)) -+#if !defined(bool) && !defined(bool_defined) && !(defined(__cplusplus) || __STDC_VERSION__ >= 202311L) - typedef char bool; /* Ordinary boolean values 0 1 */ - #endif - /* Macros for converting *constants* to the right type */