connectivity/source/commontools/FValue.cxx | 22 ++++++++++++++++++---- connectivity/source/commontools/dbtools.cxx | 18 +++++++++++++++--- connectivity/source/commontools/parameters.cxx | 1 + dbaccess/source/core/api/RowSet.cxx | 4 ---- 4 files changed, 34 insertions(+), 11 deletions(-)
New commits: commit 9a9ee66f0d9dd126ed31db096b77f9c67355411b Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Aug 14 17:36:50 2013 +0200 fixup handling of unsigned values that overflow their signed counterpart type Change-Id: I7d446a5fdddb9d5ef313c1bd022fd959b11dec28 diff --git a/connectivity/source/commontools/FValue.cxx b/connectivity/source/commontools/FValue.cxx index bf78289..5a18711 100644 --- a/connectivity/source/commontools/FValue.cxx +++ b/connectivity/source/commontools/FValue.cxx @@ -204,8 +204,15 @@ void ORowSetValue::setTypeKind(sal_Int32 _eType) (*this) = getString(); break; case DataType::BIGINT: - (*this) = getLong(); + { + sal_Int64 nVal(getLong()); + sal_uInt64 nuVal(getULong()); + if (nVal == 0 && nuVal != 0) + (*this) = nuVal; + else + (*this) = nVal; break; + } case DataType::FLOAT: (*this) = getFloat(); @@ -221,8 +228,15 @@ void ORowSetValue::setTypeKind(sal_Int32 _eType) (*this) = getInt16(); break; case DataType::INTEGER: - (*this) = getInt32(); + { + sal_Int32 nVal(getInt32()); + sal_uInt32 nuVal(getUInt32()); + if (nVal == 0 && nuVal != 0) + (*this) = nuVal; + else + (*this) = nVal; break; + } case DataType::BIT: case DataType::BOOLEAN: (*this) = getBool(); @@ -1498,7 +1512,7 @@ sal_uInt32 ORowSetValue::getUInt32() const case DataType::DECIMAL: case DataType::NUMERIC: case DataType::LONGVARCHAR: - nRet = OUString(m_aValue.m_pString).toInt32(); + nRet = OUString(m_aValue.m_pString).toUInt32(); break; case DataType::FLOAT: nRet = sal_uInt32(m_aValue.m_nFloat); @@ -1645,7 +1659,7 @@ sal_uInt64 ORowSetValue::getULong() const case DataType::DECIMAL: case DataType::NUMERIC: case DataType::LONGVARCHAR: - nRet = static_cast<sal_uInt64>(OUString(m_aValue.m_pString).toInt64()); + nRet = static_cast<sal_uInt64>(OUString(m_aValue.m_pString).toUInt64()); break; case DataType::FLOAT: nRet = sal_uInt64(m_aValue.m_nFloat); diff --git a/connectivity/source/commontools/dbtools.cxx b/connectivity/source/commontools/dbtools.cxx index 8d24548..39b7e91 100644 --- a/connectivity/source/commontools/dbtools.cxx +++ b/connectivity/source/commontools/dbtools.cxx @@ -1595,6 +1595,14 @@ sal_Bool implSetObject( const Reference< XParameters >& _rxParameters, switch (_rValue.getValueTypeClass()) { case TypeClass_UNSIGNED_HYPER: + { + sal_uInt64 nValue = 0; + OSL_VERIFY( _rValue >>= nValue ); + _rxParameters->setString(_nColumnIndex, OUString::number(nValue)); + } + break; + + case TypeClass_UNSIGNED_LONG: case TypeClass_HYPER: { sal_Int64 nValue = 0; @@ -1627,7 +1635,6 @@ sal_Bool implSetObject( const Reference< XParameters >& _rxParameters, _rxParameters->setByte(_nColumnIndex, *(sal_Int8 *)_rValue.getValue()); break; - case TypeClass_UNSIGNED_SHORT: case TypeClass_SHORT: _rxParameters->setShort(_nColumnIndex, *(sal_Int16*)_rValue.getValue()); break; @@ -1636,10 +1643,14 @@ sal_Bool implSetObject( const Reference< XParameters >& _rxParameters, _rxParameters->setString(_nColumnIndex, OUString((sal_Unicode *)_rValue.getValue(),1)); break; - case TypeClass_UNSIGNED_LONG: + case TypeClass_UNSIGNED_SHORT: case TypeClass_LONG: - _rxParameters->setInt(_nColumnIndex, *(sal_Int32*)_rValue.getValue()); + { + sal_Int32 nValue = 0; + OSL_VERIFY( _rValue >>= nValue ); + _rxParameters->setInt(_nColumnIndex, nValue); break; + } case TypeClass_FLOAT: _rxParameters->setFloat(_nColumnIndex, *(float*)_rValue.getValue()); commit 6dc6300fe50ea9555a9a54755c07a7b55519f71a Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Aug 14 17:33:12 2013 +0200 better debugging: dump unexpected exception Change-Id: I5df60d69431c67e3b8a2d76677d82e8eb1bd398a diff --git a/connectivity/source/commontools/parameters.cxx b/connectivity/source/commontools/parameters.cxx index 32ac6e8..2b658c5 100644 --- a/connectivity/source/commontools/parameters.cxx +++ b/connectivity/source/commontools/parameters.cxx @@ -609,6 +609,7 @@ namespace dbtools } catch( const Exception& ) { + DBG_UNHANDLED_EXCEPTION(); SAL_WARN( "connectivity.commontools", "ParameterManager::fillLinkedParameters: master-detail parameter number " << sal_Int32( *aPosition + 1 ) << " could not be filled!" ); } commit 76b5ac2193f4822d87a4543b7d6adfff4e7f0cf2 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Aug 14 17:32:36 2013 +0200 doing it once is sufficient Change-Id: If31845aa575b3f9459507deefb1b469ac3715e35 diff --git a/dbaccess/source/core/api/RowSet.cxx b/dbaccess/source/core/api/RowSet.cxx index 64e7d84..6ef538a 100644 --- a/dbaccess/source/core/api/RowSet.cxx +++ b/dbaccess/source/core/api/RowSet.cxx @@ -2424,10 +2424,6 @@ ORowSetValue& ORowSet::getParameterStorage(sal_Int32 parameterIndex) m_aParametersSet.resize( parameterIndex ,false); m_aParametersSet[parameterIndex - 1] = true; - if ( m_aParametersSet.size() < (size_t)parameterIndex ) - m_aParametersSet.resize( parameterIndex ,false); - m_aParametersSet[parameterIndex - 1] = true; - if ( m_pParameters.is() ) { if ( m_bCommandFacetsDirty ) commit d805c470845c89a54bfc50ec7d75dfba670d8b21 Author: Lionel Elie Mamane <lio...@mamane.lu> Date: Wed Aug 14 16:08:38 2013 +0200 fdo#67546 handle unsigned 64 bit integers Change-Id: I09453c73303076318b7105a778ff98695b0a3839 diff --git a/connectivity/source/commontools/dbtools.cxx b/connectivity/source/commontools/dbtools.cxx index 1ea9b14..8d24548 100644 --- a/connectivity/source/commontools/dbtools.cxx +++ b/connectivity/source/commontools/dbtools.cxx @@ -1594,6 +1594,7 @@ sal_Bool implSetObject( const Reference< XParameters >& _rxParameters, sal_Bool bSuccessfullyReRouted = sal_True; switch (_rValue.getValueTypeClass()) { + case TypeClass_UNSIGNED_HYPER: case TypeClass_HYPER: { sal_Int64 nValue = 0; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits