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,