summaryrefslogtreecommitdiff
path: root/connectivity
diff options
context:
space:
mode:
authorJulien Nabet <serval2412@yahoo.fr>2018-05-26 18:01:15 +0200
committerJulien Nabet <serval2412@yahoo.fr>2018-05-29 07:01:42 +0200
commit570279baa7df076413cc6b4f9220a07248db0c1b (patch)
tree1c26a2610a3947d61a4517089409c6f921ef9675 /connectivity
parentc3a9610e66f0577cb5db3b166b11492ae5b33555 (diff)
tdf#117446: FB mig, (VAR)BINARY, fix memory management
By default, 8000 bytes are allocated for VARBINARY The pb is we can need more. See https://bugs.documentfoundation.org/show_bug.cgi?id=117446#c6 Change-Id: I0ef5811dc01a587491bd9345129d1a41a4d9f095 Reviewed-on: https://gerrit.libreoffice.org/54863 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Julien Nabet <serval2412@yahoo.fr> (cherry picked from commit 54ddc4ff4c2ff7e8b2c502d6b475cfdc9b8e3cec) Reviewed-on: https://gerrit.libreoffice.org/54963 Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'connectivity')
-rw-r--r--connectivity/source/drivers/firebird/PreparedStatement.cxx9
1 files changed, 8 insertions, 1 deletions
diff --git a/connectivity/source/drivers/firebird/PreparedStatement.cxx b/connectivity/source/drivers/firebird/PreparedStatement.cxx
index 0a43d5c93851..fee4029088f4 100644
--- a/connectivity/source/drivers/firebird/PreparedStatement.cxx
+++ b/connectivity/source/drivers/firebird/PreparedStatement.cxx
@@ -837,12 +837,19 @@ void SAL_CALL OPreparedStatement::setBytes(sal_Int32 nParameterIndex,
setParameterNull(nParameterIndex, false);
const sal_Int32 nMaxSize = 0xFFFF;
Sequence<sal_Int8> xBytesCopy(xBytes);
- // First 2 bytes indicate string size
if (xBytesCopy.getLength() > nMaxSize)
{
xBytesCopy.realloc( nMaxSize );
}
const short nSize = xBytesCopy.getLength();
+ // 8000 corresponds to value from lcl_addDefaultParameters
+ // in dbaccess/source/filter/hsqldb/createparser.cxx
+ if (nSize > 8000)
+ {
+ free(pVar->sqldata);
+ pVar->sqldata = static_cast<char *>(malloc(sizeof(char) * nSize + 2));
+ }
+ // First 2 bytes indicate string size
memcpy(pVar->sqldata, &nSize, 2);
// Actual data
memcpy(pVar->sqldata + 2, xBytesCopy.getConstArray(), nSize);