15
15
#include " database/src/desktop/query_params_comparator.h"
16
16
17
17
#include < cassert>
18
+ #include < cstdint>
18
19
19
20
#include " app/src/util.h"
20
21
#include " database/src/desktop/util_desktop.h"
@@ -212,7 +213,12 @@ int QueryParamsComparator::CompareValues(const Variant& variant_a,
212
213
case kPrecedenceNumber : {
213
214
// If they're both integers.
214
215
if (type_a == Variant::kTypeInt64 && type_b == Variant::kTypeInt64 ) {
215
- return value_a->int64_value () - value_b->int64_value ();
216
+ int64_t int64_a = value_a->int64_value ();
217
+ int64_t int64_b = value_b->int64_value ();
218
+
219
+ if (int64_a < int64_b) return -1 ;
220
+ if (int64_a > int64_b) return 1 ;
221
+ return 0 ;
216
222
}
217
223
218
224
// At least one of them is a double, so we treat them both as doubles.
@@ -227,8 +233,10 @@ int QueryParamsComparator::CompareValues(const Variant& variant_a,
227
233
double double_b = (type_b == Variant::kTypeDouble )
228
234
? value_b->double_value ()
229
235
: static_cast <double >(value_b->int64_value ());
230
- double result = double_a - double_b;
231
- return (result == 0.0 ) ? 0 : (result > 0.0 ? 1 : -1 );
236
+
237
+ if (double_a < double_b) return -1 ;
238
+ if (double_a > double_b) return 1 ;
239
+ return 0 ;
232
240
}
233
241
case kPrecedenceString : {
234
242
return strcmp (value_a->string_value (), value_b->string_value ());
0 commit comments