When converting datetime_t to a long, I now need to directly access the 'when'
member, otherwise C++ chooses the bool conversion, which is always wrong.
This commit is contained in:
parent
2aeee0bb64
commit
911b866230
2 changed files with 10 additions and 5 deletions
10
value.cc
10
value.cc
|
|
@ -630,7 +630,7 @@ bool value_t::operator OP(const value_t& value) \
|
||||||
\
|
\
|
||||||
case DATETIME: \
|
case DATETIME: \
|
||||||
return (*((long *) data) OP \
|
return (*((long *) data) OP \
|
||||||
((long) *((datetime_t *) value.data))); \
|
((long) ((datetime_t *) value.data)->when)); \
|
||||||
\
|
\
|
||||||
case AMOUNT: \
|
case AMOUNT: \
|
||||||
return (amount_t(*((long *) data)) OP \
|
return (amount_t(*((long *) data)) OP \
|
||||||
|
|
@ -657,7 +657,7 @@ bool value_t::operator OP(const value_t& value) \
|
||||||
\
|
\
|
||||||
case INTEGER: \
|
case INTEGER: \
|
||||||
return (*((datetime_t *) data) OP \
|
return (*((datetime_t *) data) OP \
|
||||||
datetime_t(*((long *) value.data))); \
|
datetime_t(std::time_t(*((long *) value.data)))); \
|
||||||
\
|
\
|
||||||
case DATETIME: \
|
case DATETIME: \
|
||||||
return (*((datetime_t *) data) OP \
|
return (*((datetime_t *) data) OP \
|
||||||
|
|
@ -786,7 +786,7 @@ value_t::operator long() const
|
||||||
case INTEGER:
|
case INTEGER:
|
||||||
return *((long *) data);
|
return *((long *) data);
|
||||||
case DATETIME:
|
case DATETIME:
|
||||||
return *((datetime_t *) data);
|
return ((datetime_t *) data)->when;
|
||||||
case AMOUNT:
|
case AMOUNT:
|
||||||
return *((amount_t *) data);
|
return *((amount_t *) data);
|
||||||
case BALANCE:
|
case BALANCE:
|
||||||
|
|
@ -884,7 +884,7 @@ void value_t::cast(type_t cast_type)
|
||||||
case INTEGER:
|
case INTEGER:
|
||||||
break;
|
break;
|
||||||
case DATETIME:
|
case DATETIME:
|
||||||
*((datetime_t *) data) = datetime_t(*((long *) data));
|
*((datetime_t *) data) = datetime_t(std::time_t(*((long *) data)));
|
||||||
break;
|
break;
|
||||||
case AMOUNT:
|
case AMOUNT:
|
||||||
new((amount_t *)data) amount_t(*((long *) data));
|
new((amount_t *)data) amount_t(*((long *) data));
|
||||||
|
|
@ -908,7 +908,7 @@ void value_t::cast(type_t cast_type)
|
||||||
*((bool *) data) = *((datetime_t *) data);
|
*((bool *) data) = *((datetime_t *) data);
|
||||||
break;
|
break;
|
||||||
case INTEGER:
|
case INTEGER:
|
||||||
*((long *) data) = *((datetime_t *) data);
|
*((long *) data) = ((datetime_t *) data)->when;
|
||||||
break;
|
break;
|
||||||
case DATETIME:
|
case DATETIME:
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
5
walk.cc
5
walk.cc
|
|
@ -28,6 +28,11 @@ bool compare_items<transaction_t>::operator()(const transaction_t * left,
|
||||||
rxdata.dflags |= TRANSACTION_SORT_CALC;
|
rxdata.dflags |= TRANSACTION_SORT_CALC;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DEBUG_PRINT("ledger.walk.compare_items_xact",
|
||||||
|
"lxdata.sort_value = " << lxdata.sort_value);
|
||||||
|
DEBUG_PRINT("ledger.walk.compare_items_xact",
|
||||||
|
"rxdata.sort_value = " << rxdata.sort_value);
|
||||||
|
|
||||||
return lxdata.sort_value < rxdata.sort_value;
|
return lxdata.sort_value < rxdata.sort_value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue