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 */

Reply via email to