summaryrefslogtreecommitdiffstats
path: root/dbaccess
diff options
context:
space:
mode:
authorDavid Ostrovsky <david@ostrovsky.org>2013-02-04 11:12:57 +0100
committerLionel Elie Mamane <lionel@mamane.lu>2013-02-05 15:46:17 +0100
commit2bd856e643ef526c1283475c19cd355f7ef840f4 (patch)
treed6ff071ff68de3402b35bec4f8fc82d6c3587533 /dbaccess
parentmake translatable a few more ui strings (diff)
downloadcore-2bd856e643ef526c1283475c19cd355f7ef840f4.tar.gz
core-2bd856e643ef526c1283475c19cd355f7ef840f4.zip
ORowSetValue: clean up sign/unsigned union member
Also switch BOOLEAN constructor from sal_Bool to bool. old/new signed/unsigned storage situation: ------------------------------------------------------- SQL type | signed | unsigned old | unsigned new ------------------------------------------------------- TINYINT | sal_Int8 | sal_Int16 | sal_uInt8 SMALLINT | sal_Int16 | sal_Int32 | sal_uInt16 INTEGER | sal_Int32 | sal_Int64 | sal_uInt32 BIGINT | sal_Int64 | pValue (String*) | sal_uInt64 ------------------------------------------------------- When sticking an UNSIGNED TINYINT into an Any, silently promote it to UNSIGNED SMALLINT (that is sal_uInt16), else Any would take it as a sal_Bool and normalise to sal_True (1) or sal_False (0). When constructing an ORowSetValue from a sal_Bool, silently keep it as an unsigned 8 bit integer (that is understand it as a sal_uInt8). This will work in most cases, since when asked back for a bool or sal_Bool, we'll give back the right value. Only code looking at the type tag could possibly make a "wrong" decision. The main (hopefully only?) path through which this would happen is through an implementation of XParameters::setBoolean XRowUpdate::updateBoolean that would use its sal_Bool argument to construct an ORowSetValue. So make sure each implementation constructs a proper BOOLEAN so as not to get confused. For authorship/copyright purposes, this patch is a cooperation between Lionel Elie Mamane <lionel@mamane.lu> and David Ostrovsky <david@ostrovsky.org> Change-Id: I3f1f08716127147f077bff4edb6ec558b1b09e09
Diffstat (limited to 'dbaccess')
-rw-r--r--dbaccess/source/core/api/RowSet.cxx4
1 files changed, 2 insertions, 2 deletions
diff --git a/dbaccess/source/core/api/RowSet.cxx b/dbaccess/source/core/api/RowSet.cxx
index 50b9aa322640..9d6489942fc4 100644
--- a/dbaccess/source/core/api/RowSet.cxx
+++ b/dbaccess/source/core/api/RowSet.cxx
@@ -719,7 +719,7 @@ void SAL_CALL ORowSet::updateNull( sal_Int32 columnIndex ) throw(SQLException, R
void SAL_CALL ORowSet::updateBoolean( sal_Int32 columnIndex, sal_Bool x ) throw(SQLException, RuntimeException)
{
- updateValue(columnIndex,x);
+ updateValue(columnIndex, static_cast<bool>(x));
}
void SAL_CALL ORowSet::updateByte( sal_Int32 columnIndex, sal_Int8 x ) throw(SQLException, RuntimeException)
@@ -2475,7 +2475,7 @@ void ORowSet::setParameter(sal_Int32 parameterIndex, const ORowSetValue& x)
void SAL_CALL ORowSet::setBoolean( sal_Int32 parameterIndex, sal_Bool x ) throw(SQLException, RuntimeException)
{
- setParameter(parameterIndex,x);
+ setParameter(parameterIndex, static_cast<bool>(x));
}
void SAL_CALL ORowSet::setByte( sal_Int32 parameterIndex, sal_Int8 x ) throw(SQLException, RuntimeException)