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]

Reply via email to