diff options
author | Oliver Bolte <obo@openoffice.org> | 2009-09-08 09:50:48 +0000 |
---|---|---|
committer | Oliver Bolte <obo@openoffice.org> | 2009-09-08 09:50:48 +0000 |
commit | 39e949c290b8ab1e063930380a8926afb0615dd0 (patch) | |
tree | b1871069c6ecb5bade5ce3dbafd88cdbbefa041d /connectivity/source/drivers/odbcbase/OTools.cxx | |
parent | 0b32392c9ef250f90977b6953db8b4c821546951 (diff) |
CWS-TOOLING: integrate CWS dbaperf3
2009-08-28 08:04:41 +0200 oj r275515 : wrong replacement
2009-08-28 07:57:44 +0200 oj r275514 : declaration of 'nRealSize' shadows a previous local
2009-08-20 10:17:11 +0200 oj r275168 : CWS-TOOLING: rebase CWS dbaperf3 to trunk@275001 (milestone: DEV300:m55)
2009-08-19 11:50:49 +0200 oj r275145 : #ii102891# minimize metadata calls
2009-06-22 12:20:15 +0200 oj r273213 : compile error
2009-06-22 12:19:45 +0200 oj r273212 : compile error
2009-06-18 08:54:08 +0200 oj r273099 : #i102891# reduce calls to databasemetadata
2009-06-18 08:19:55 +0200 oj r273095 : #i102891# reduce calls to databasemetadata
Diffstat (limited to 'connectivity/source/drivers/odbcbase/OTools.cxx')
-rw-r--r-- | connectivity/source/drivers/odbcbase/OTools.cxx | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/connectivity/source/drivers/odbcbase/OTools.cxx b/connectivity/source/drivers/odbcbase/OTools.cxx index f72aec64e7dc..a7ac4ebf4d78 100644 --- a/connectivity/source/drivers/odbcbase/OTools.cxx +++ b/connectivity/source/drivers/odbcbase/OTools.cxx @@ -571,9 +571,12 @@ Sequence<sal_Int8> OTools::getBytesValue(OConnection* _pConnection, return ::rtl::OUString(); // Bei Fehler bricht der GETDATA-Makro mit return ab, // bei NULL mit break! - SQLINTEGER nLen = pcbValue != SQL_NO_TOTAL ? std::min(pcbValue, nMaxLen) : (nMaxLen-1); + SQLINTEGER nRealSize = 0; + if ( pcbValue > -1 ) + nRealSize = pcbValue / sizeof(sal_Unicode); + SQLINTEGER nLen = pcbValue != SQL_NO_TOTAL ? std::min(nRealSize, nMaxLen) : (nMaxLen-1); waCharArray[nLen] = 0; - aData = ::rtl::OUString(waCharArray); + aData.append(waCharArray,nLen); // Es handelt sich um Binaerdaten, um einen String, der fuer // StarView zu lang ist oder der Treiber kann die Laenge der @@ -598,7 +601,10 @@ Sequence<sal_Int8> OTools::getBytesValue(OConnection* _pConnection, (SQLINTEGER)nLen+1, &pcbValue), _aStatementHandle,SQL_HANDLE_STMT,_xInterface); - nLen = pcbValue != SQL_NO_TOTAL ? std::min(pcbValue, nMaxLen) : (nMaxLen-1); + nRealSize = 0; + if ( pcbValue > -1 ) + nRealSize = pcbValue / sizeof(sal_Unicode); + nLen = pcbValue != SQL_NO_TOTAL ? std::min(nRealSize, nMaxLen) : (nMaxLen-1); waCharArray[nLen] = 0; aData.append(::rtl::OUString(waCharArray)); @@ -628,7 +634,7 @@ Sequence<sal_Int8> OTools::getBytesValue(OConnection* _pConnection, aCharArray[nLen] = 0; if ( ((pcbValue == SQL_NO_TOTAL) || pcbValue > nMaxLen) && aCharArray[nLen-1] == 0 && nLen > 0 ) --nLen; - aData = ::rtl::OUString((const sal_Char*)aCharArray,nLen, _nTextEncoding); + aData.append(::rtl::OUString((const sal_Char*)aCharArray,nLen, _nTextEncoding)); // Es handelt sich um Binaerdaten, um einen String, der fuer // StarView zu lang ist oder der Treiber kann die Laenge der |