User: rt Date: 2008-06-06 13:16:35+0000 Modified: dba/connectivity/source/commontools/FValue.cxx
Log: INTEGRATION: CWS dba30c (1.33.10); FILE MERGED 2008/05/07 08:59:13 oj 1.33.10.1: #i73021 #correct signed, unsiged handling of bigit File Changes: Directory: /dba/connectivity/source/commontools/ ================================================ File [changed]: FValue.cxx Url: http://dba.openoffice.org/source/browse/dba/connectivity/source/commontools/FValue.cxx?r1=1.33&r2=1.34 Delta lines: +27 -6 -------------------- --- FValue.cxx 2008-04-10 07:54:16+0000 1.33 +++ FValue.cxx 2008-06-06 13:16:32+0000 1.34 @@ -1044,7 +1044,10 @@ bRet = ::rtl::OUString(m_aValue.m_pString).toInt32() != 0; break; case DataType::BIGINT: - bRet = *(sal_Int64*)m_aValue.m_pValue != 0.0; + if ( m_bSigned ) + bRet = *(sal_Int64*)m_aValue.m_pValue != 0; + else + bRet = ::rtl::OUString(m_aValue.m_pString).toInt64() != 0; break; case DataType::FLOAT: bRet = *(float*)m_aValue.m_pValue != 0.0; @@ -1096,7 +1099,10 @@ nRet = sal_Int8(::rtl::OUString(m_aValue.m_pString).toInt32()); break; case DataType::BIGINT: + if ( m_bSigned ) nRet = sal_Int8(*(sal_Int64*)m_aValue.m_pValue); + else + nRet = sal_Int8(::rtl::OUString(m_aValue.m_pString).toInt32()); break; case DataType::FLOAT: nRet = sal_Int8(*(float*)m_aValue.m_pValue); @@ -1157,7 +1163,10 @@ nRet = sal_Int16(::rtl::OUString(m_aValue.m_pString).toInt32()); break; case DataType::BIGINT: + if ( m_bSigned ) nRet = sal_Int16(*(sal_Int64*)m_aValue.m_pValue); + else + nRet = sal_Int16(::rtl::OUString(m_aValue.m_pString).toInt32()); break; case DataType::FLOAT: nRet = sal_Int16(*(float*)m_aValue.m_pValue); @@ -1726,10 +1735,22 @@ switch(m_eTypeKind) { case DataType::BIGINT: - if ( m_bSigned ) - (*this) = getLong(); + if ( m_bSigned ) // now we are signed, so we were unsigned and need to call getString() + { + m_bSigned = !m_bSigned; + const ::rtl::OUString sValue = getString(); + free(); + m_bSigned = !m_bSigned; + (*this) = sValue; + } else - (*this) = getString(); + { + m_bSigned = !m_bSigned; + const sal_Int64 nValue = getLong(); + free(); + m_bSigned = !m_bSigned; + (*this) = nValue; + } break; case DataType::TINYINT: if ( m_bSigned ) --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
