connectivity/source/drivers/firebird/PreparedStatement.cxx |   11 +++--------
 1 file changed, 3 insertions(+), 8 deletions(-)

New commits:
commit 10363c80eb3fd0637d91714fe977de77b43d3aa3
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Wed Sep 4 10:37:15 2024 +0500
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Wed Sep 4 09:25:32 2024 +0200

    No need to copy the data, only to limit the size of bytes copied later
    
    Change-Id: I76d5c3cccf64a69efe41dd850fa2542e54c71428
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172851
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>
    Tested-by: Jenkins

diff --git a/connectivity/source/drivers/firebird/PreparedStatement.cxx 
b/connectivity/source/drivers/firebird/PreparedStatement.cxx
index 28746c4f84cb..1c63cdb25fcc 100644
--- a/connectivity/source/drivers/firebird/PreparedStatement.cxx
+++ b/connectivity/source/drivers/firebird/PreparedStatement.cxx
@@ -967,12 +967,7 @@ void SAL_CALL OPreparedStatement::setBytes(sal_Int32 
nParameterIndex,
     {
             setParameterNull(nParameterIndex, false);
             const sal_Int32 nMaxSize = 0xFFFF;
-            Sequence<sal_Int8> xBytesCopy(xBytes);
-            if (xBytesCopy.getLength() > nMaxSize)
-            {
-                xBytesCopy.realloc( nMaxSize );
-            }
-            const sal_uInt16 nSize = xBytesCopy.getLength();
+            const sal_uInt16 nSize = std::min(xBytes.getLength(), nMaxSize);
             // 8000 corresponds to value from lcl_addDefaultParameters
             // in dbaccess/source/filter/hsqldb/createparser.cxx
             if (nSize > 8000)
@@ -984,7 +979,7 @@ void SAL_CALL OPreparedStatement::setBytes(sal_Int32 
nParameterIndex,
             // First 2 bytes indicate string size
             memcpy(pVar->sqldata, &nSize, 2);
             // Actual data
-            memcpy(pVar->sqldata + 2, xBytesCopy.getConstArray(), nSize);
+            memcpy(pVar->sqldata + 2, xBytes.getConstArray(), nSize);
     }
     else if( dType == SQL_TEXT )
     {
commit c785399884650fd0a1a4ffc3008fbb665e47a9d3
Author:     Mike Kaganski <mike.kagan...@collabora.com>
AuthorDate: Wed Sep 4 09:57:39 2024 +0500
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Wed Sep 4 09:25:26 2024 +0200

    In MSVC, non-static constexpr objects are initialized at run-time
    
    Yes, it's a memcpy from a compile-time blob, but still they are
    stack-allocated, so cycles are spent on their initialization.
    
    Change-Id: I152369887a7769087e5dfe139ea82498533835b5
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172850
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>
    Tested-by: Jenkins

diff --git a/connectivity/source/drivers/firebird/PreparedStatement.cxx 
b/connectivity/source/drivers/firebird/PreparedStatement.cxx
index 9fb70c305adb..28746c4f84cb 100644
--- a/connectivity/source/drivers/firebird/PreparedStatement.cxx
+++ b/connectivity/source/drivers/firebird/PreparedStatement.cxx
@@ -358,7 +358,7 @@ namespace {
 
 sal_Int64 toPowOf10AndRound(double n, int powOf10)
 {
-    constexpr sal_Int64 powers[] = {
+    static constexpr sal_Int64 powers[] = {
         1,
         10,
         100,

Reply via email to