diff options
author | Julien Nabet <serval2412@yahoo.fr> | 2018-05-26 18:01:15 +0200 |
---|---|---|
committer | Julien Nabet <serval2412@yahoo.fr> | 2018-05-29 07:01:42 +0200 |
commit | 570279baa7df076413cc6b4f9220a07248db0c1b (patch) | |
tree | 1c26a2610a3947d61a4517089409c6f921ef9675 | |
parent | c3a9610e66f0577cb5db3b166b11492ae5b33555 (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>
-rw-r--r-- | connectivity/source/drivers/firebird/PreparedStatement.cxx | 9 |
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); |