connectivity/source/drivers/odbcbase/OTools.cxx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-)
New commits: commit b475a63edea91daccfc179506b53a5f2ae7fc12b Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Mon Apr 15 01:27:39 2013 +0200 fdo#61142 mixup between size and length Change-Id: Ia2903d5139378e97bb2e8d00ccb2c213d3e1dee6 Reviewed-on: https://gerrit.libreoffice.org/3385 Reviewed-by: Fridrich Strba <fridr...@documentfoundation.org> Tested-by: Fridrich Strba <fridr...@documentfoundation.org> diff --git a/connectivity/source/drivers/odbcbase/OTools.cxx b/connectivity/source/drivers/odbcbase/OTools.cxx index d568b7f..7165c4d 100644 --- a/connectivity/source/drivers/odbcbase/OTools.cxx +++ b/connectivity/source/drivers/odbcbase/OTools.cxx @@ -424,11 +424,15 @@ Sequence<sal_Int8> OTools::getBytesValue(const OConnection* _pConnection, // we assume everyone (LibO & ODBC) uses UTF-16; see OPreparedStatement::setParameter BOOST_STATIC_ASSERT(sizeof(sal_Unicode) == 2); BOOST_STATIC_ASSERT(sizeof(SQLWCHAR) == 2); + BOOST_STATIC_ASSERT(sizeof(waCharArray) % 2 == 0); + // Size == number of bytes, Len == number of UTF-16 code units + const SQLLEN nMaxSize = sizeof(waCharArray); + const SQLLEN nMaxLen = sizeof(waCharArray) / sizeof(sal_Unicode); + BOOST_STATIC_ASSERT(nMaxLen * sizeof(sal_Unicode) == nMaxSize); + // read the unicode data - const SQLLEN nMaxLen = sizeof(waCharArray) / sizeof(sal_Unicode); SQLLEN pcbValue = SQL_NO_TOTAL; - - while ((pcbValue == SQL_NO_TOTAL ) || (pcbValue >= nMaxLen) ) + while ((pcbValue == SQL_NO_TOTAL ) || (pcbValue >= nMaxSize) ) { OTools::ThrowException(_pConnection, (*(T3SQLGetData)_pConnection->getOdbcFunction(ODBC3SQLGetData))( @@ -446,7 +450,7 @@ Sequence<sal_Int8> OTools::getBytesValue(const OConnection* _pConnection, SQLLEN nReadChars; OSL_ENSURE( (pcbValue < 0) || (pcbValue % 2 == 0), "ODBC: SQLGetData of SQL_C_WCHAR returned odd number of bytes"); - if ( (pcbValue == SQL_NO_TOTAL) || (pcbValue >= nMaxLen) ) + if ( (pcbValue == SQL_NO_TOTAL) || (pcbValue >= nMaxSize) ) { // we filled the buffer; remove the terminating null character nReadChars = nMaxLen-1; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits