connectivity/source/drivers/odbc/OPreparedStatement.cxx | 2 + connectivity/source/drivers/odbc/OTools.cxx | 21 +++++++++------- 2 files changed, 15 insertions(+), 8 deletions(-)
New commits: commit b0b4a721b4f33ef132fcbdf4e5069c11269b121e Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Sat Jun 28 17:14:57 2014 +0200 odbc: no, RTL_TEXTENCODING_UCS2/4 doesn't work as we intended Change-Id: Ie1bcbb41319f5ddfd349f6ef1ec888715ab2b9e2 diff --git a/connectivity/source/drivers/odbc/OTools.cxx b/connectivity/source/drivers/odbc/OTools.cxx index fe3b391..b38564d 100644 --- a/connectivity/source/drivers/odbc/OTools.cxx +++ b/connectivity/source/drivers/odbc/OTools.cxx @@ -416,14 +416,8 @@ OUString OTools::getStringValue(OConnection* _pConnection, { SQLWCHAR waCharArray[2048]; BOOST_STATIC_ASSERT(sizeof(waCharArray) % sizeof(SQLWCHAR) == 0); - rtl_TextEncoding nSQLWCHAREncoding = RTL_TEXTENCODING_UCS2; BOOST_STATIC_ASSERT(sizeof(SQLWCHAR) == 2 || sizeof(SQLWCHAR) == 4); - if(sizeof(SQLWCHAR) == 4) - { - // we assume LibO uses UTF-16 and & ODBC uses UCS4 (UTF-32); see OPreparedStatement::setParameter - nSQLWCHAREncoding = RTL_TEXTENCODING_UCS4; - } - // Size == number of bytes, Len == number of UTF-16 code units + // Size == number of bytes, Len == number of UTF-16 or UCS4 code units const SQLLEN nMaxSize = sizeof(waCharArray); const SQLLEN nMaxLen = sizeof(waCharArray) / sizeof(SQLWCHAR); BOOST_STATIC_ASSERT(nMaxLen * sizeof(SQLWCHAR) == nMaxSize); @@ -463,7 +457,17 @@ OUString OTools::getStringValue(OConnection* _pConnection, nReadChars = pcbValue/sizeof(SQLWCHAR); } - aData.append(OUString((sal_Char*)waCharArray, nReadChars, nSQLWCHAREncoding)); + if (sizeof (SQLWCHAR) == 2) + { + aData.append(waCharArry, nReadChars); + } + else + { + for (sal_Int32 i = 0; i < nReadChars; ++i) + { + aData.appendUtf32(waCharArray[i]); + } + } } break; } commit 22a13cab85398846ed521989531f9471b9a1835a Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Fri Jun 27 17:29:42 2014 +0200 be more paranoid Change-Id: I8ab6c26a489f5cbb6b92c36313c6912939895e52 diff --git a/connectivity/source/drivers/odbc/OPreparedStatement.cxx b/connectivity/source/drivers/odbc/OPreparedStatement.cxx index cf737a0..54f6a26 100644 --- a/connectivity/source/drivers/odbc/OPreparedStatement.cxx +++ b/connectivity/source/drivers/odbc/OPreparedStatement.cxx @@ -359,6 +359,8 @@ void OPreparedStatement::setParameter(const sal_Int32 parameterIndex, const sal_ } else { + assert(getOwnConnection()->getTextEncoding() != RTL_TEXTENCODING_UCS2 && + getOwnConnection()->getTextEncoding() != RTL_TEXTENCODING_UCS4); OString sOData( OUStringToOString(_sData, getOwnConnection()->getTextEncoding())); nCharLen = nByteLen = sOData.getLength(); diff --git a/connectivity/source/drivers/odbc/OTools.cxx b/connectivity/source/drivers/odbc/OTools.cxx index bbfc1ea..fe3b391 100644 --- a/connectivity/source/drivers/odbc/OTools.cxx +++ b/connectivity/source/drivers/odbc/OTools.cxx @@ -415,6 +415,7 @@ OUString OTools::getStringValue(OConnection* _pConnection, case SQL_WLONGVARCHAR: { SQLWCHAR waCharArray[2048]; + BOOST_STATIC_ASSERT(sizeof(waCharArray) % sizeof(SQLWCHAR) == 0); rtl_TextEncoding nSQLWCHAREncoding = RTL_TEXTENCODING_UCS2; BOOST_STATIC_ASSERT(sizeof(SQLWCHAR) == 2 || sizeof(SQLWCHAR) == 4); if(sizeof(SQLWCHAR) == 4) _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits