2009-08-25 12:49 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/source/vm/hvm.c
* harbour/source/common/expropt2.c
* cleaned casting in date and timestamp math operations to use exactly
the same conversions in all places in compiled and HVM
This commit is contained in:
@@ -17,6 +17,12 @@
|
||||
past entries belonging to author(s): Viktor Szakats.
|
||||
*/
|
||||
|
||||
2009-08-25 12:49 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/source/vm/hvm.c
|
||||
* harbour/source/common/expropt2.c
|
||||
* cleaned casting in date and timestamp math operations to use exactly
|
||||
the same conversions in all places in compiled and HVM
|
||||
|
||||
2009-08-25 10:51 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
|
||||
* bin/postinst.bat
|
||||
! Fixed to work without HB_TOP value. Regression after recent change.
|
||||
|
||||
@@ -554,9 +554,9 @@ HB_EXPR_PTR hb_compExprReduceMinus( HB_EXPR_PTR pSelf, HB_COMP_DECL )
|
||||
else if( pLeft->ExprType == HB_ET_DATE && pRight->ExprType == HB_ET_NUMERIC )
|
||||
{
|
||||
if( pRight->value.asNum.NumType == HB_ET_LONG )
|
||||
pSelf->value.asDate.lDate = ( long ) ( ( HB_LONG ) pLeft->value.asDate.lDate - pRight->value.asNum.val.l );
|
||||
pSelf->value.asDate.lDate = pLeft->value.asDate.lDate - ( long ) pRight->value.asNum.val.l;
|
||||
else
|
||||
pSelf->value.asDate.lDate = ( long ) ( ( HB_LONG ) pLeft->value.asDate.lDate - ( HB_LONG ) pRight->value.asNum.val.d );
|
||||
pSelf->value.asDate.lDate = pLeft->value.asDate.lDate - ( long ) ( unsigned long ) pRight->value.asNum.val.d;
|
||||
pSelf->value.asDate.lTime = 0;
|
||||
pSelf->ExprType = HB_ET_DATE;
|
||||
pSelf->ValType = HB_EV_DATE;
|
||||
@@ -566,7 +566,7 @@ HB_EXPR_PTR hb_compExprReduceMinus( HB_EXPR_PTR pSelf, HB_COMP_DECL )
|
||||
else if( pLeft->ExprType == HB_ET_TIMESTAMP && pRight->ExprType == HB_ET_NUMERIC )
|
||||
{
|
||||
if( pRight->value.asNum.NumType == HB_ET_LONG )
|
||||
hb_compExprReduceTimeStampPut( pSelf, ( long ) ( pLeft->value.asDate.lDate - pRight->value.asNum.val.l ),
|
||||
hb_compExprReduceTimeStampPut( pSelf, pLeft->value.asDate.lDate - ( long ) pRight->value.asNum.val.l,
|
||||
pLeft->value.asDate.lTime );
|
||||
else
|
||||
hb_compExprReduceTimeStampAdd( pSelf, pLeft, - pRight->value.asNum.val.d );
|
||||
@@ -757,9 +757,9 @@ HB_EXPR_PTR hb_compExprReducePlus( HB_EXPR_PTR pSelf, HB_COMP_DECL )
|
||||
else if( pRight->ExprType == HB_ET_DATE )
|
||||
{
|
||||
if( pLeft->value.asNum.NumType == HB_ET_LONG )
|
||||
pSelf->value.asDate.lDate = ( long ) ( ( HB_LONG ) pRight->value.asDate.lDate + pLeft->value.asNum.val.l );
|
||||
pSelf->value.asDate.lDate = pRight->value.asDate.lDate + ( long ) pLeft->value.asNum.val.l;
|
||||
else
|
||||
pSelf->value.asDate.lDate = ( long ) ( ( HB_LONG ) pRight->value.asDate.lDate + ( HB_LONG ) pLeft->value.asNum.val.d );
|
||||
pSelf->value.asDate.lDate = pRight->value.asDate.lDate + ( long ) ( unsigned long ) pLeft->value.asNum.val.d;
|
||||
pSelf->value.asDate.lTime = 0;
|
||||
pSelf->ExprType = HB_ET_DATE;
|
||||
pSelf->ValType = HB_EV_DATE;
|
||||
@@ -769,7 +769,7 @@ HB_EXPR_PTR hb_compExprReducePlus( HB_EXPR_PTR pSelf, HB_COMP_DECL )
|
||||
else if( pRight->ExprType == HB_ET_TIMESTAMP )
|
||||
{
|
||||
if( pLeft->value.asNum.NumType == HB_ET_LONG )
|
||||
hb_compExprReduceTimeStampPut( pSelf, ( long ) ( pRight->value.asDate.lDate + pLeft->value.asNum.val.l ),
|
||||
hb_compExprReduceTimeStampPut( pSelf, pRight->value.asDate.lDate + ( long ) pLeft->value.asNum.val.l,
|
||||
pRight->value.asDate.lTime );
|
||||
else
|
||||
hb_compExprReduceTimeStampAdd( pSelf, pRight, pLeft->value.asNum.val.d );
|
||||
@@ -810,9 +810,9 @@ HB_EXPR_PTR hb_compExprReducePlus( HB_EXPR_PTR pSelf, HB_COMP_DECL )
|
||||
if( pLeft->ExprType == HB_ET_DATE )
|
||||
{
|
||||
if( pRight->value.asNum.NumType == HB_ET_LONG )
|
||||
pSelf->value.asDate.lDate = ( long ) ( ( HB_LONG ) pLeft->value.asDate.lDate + pRight->value.asNum.val.l );
|
||||
pSelf->value.asDate.lDate = pLeft->value.asDate.lDate + ( long ) pRight->value.asNum.val.l;
|
||||
else
|
||||
pSelf->value.asDate.lDate = ( long ) ( ( HB_LONG ) pLeft->value.asDate.lDate + ( HB_LONG ) pRight->value.asNum.val.d );
|
||||
pSelf->value.asDate.lDate = pLeft->value.asDate.lDate + ( long ) ( unsigned long ) pRight->value.asNum.val.d;
|
||||
pSelf->value.asDate.lTime = 0;
|
||||
pSelf->ExprType = HB_ET_DATE;
|
||||
pSelf->ValType = HB_EV_DATE;
|
||||
@@ -822,7 +822,7 @@ HB_EXPR_PTR hb_compExprReducePlus( HB_EXPR_PTR pSelf, HB_COMP_DECL )
|
||||
else if( pLeft->ExprType == HB_ET_TIMESTAMP )
|
||||
{
|
||||
if( pRight->value.asNum.NumType == HB_ET_LONG )
|
||||
hb_compExprReduceTimeStampPut( pSelf, ( long ) ( pLeft->value.asDate.lDate + pRight->value.asNum.val.l ),
|
||||
hb_compExprReduceTimeStampPut( pSelf, pLeft->value.asDate.lDate + ( long ) pRight->value.asNum.val.l,
|
||||
pLeft->value.asDate.lTime );
|
||||
else
|
||||
hb_compExprReduceTimeStampAdd( pSelf, pLeft, pRight->value.asNum.val.d );
|
||||
|
||||
@@ -3262,12 +3262,12 @@ static void hb_vmMinus( HB_ITEM_PTR pResult, HB_ITEM_PTR pItem1, HB_ITEM_PTR pIt
|
||||
}
|
||||
else if( HB_IS_DATETIME( pItem1 ) && HB_IS_DATETIME( pItem2 ) )
|
||||
{
|
||||
HB_LONG lTime = pItem1->item.asDateTime.time -
|
||||
pItem2->item.asDateTime.time,
|
||||
lJulian = pItem1->item.asDateTime.julian -
|
||||
pItem2->item.asDateTime.julian;
|
||||
long lTime = pItem1->item.asDateTime.time -
|
||||
pItem2->item.asDateTime.time,
|
||||
lJulian = pItem1->item.asDateTime.julian -
|
||||
pItem2->item.asDateTime.julian;
|
||||
if( lTime != 0 )
|
||||
hb_itemPutNDDec( pResult, hb_timeStampPackDT( ( long ) lJulian, ( long ) lTime ), HB_TIMEDIFF_DEC );
|
||||
hb_itemPutNDDec( pResult, hb_timeStampPackDT( lJulian, lTime ), HB_TIMEDIFF_DEC );
|
||||
else
|
||||
{
|
||||
if( HB_IS_COMPLEX( pResult ) )
|
||||
|
||||
Reference in New Issue
Block a user