Browse Source

LibSQL: Avoid signed arithmetic in `IntegerImpl::compare`

Mahmoud Mandour 3 years ago
parent
commit
cd4dba87fa
1 changed files with 6 additions and 3 deletions
  1. 6 3
      Userland/Libraries/LibSQL/Value.cpp

+ 6 - 3
Userland/Libraries/LibSQL/Value.cpp

@@ -704,10 +704,13 @@ bool IntegerImpl::can_cast(Value const& other_value)
 int IntegerImpl::compare(Value const& other) const
 int IntegerImpl::compare(Value const& other) const
 {
 {
     auto casted = other.to_int();
     auto casted = other.to_int();
-    if (!casted.has_value()) {
+    if (!casted.has_value())
         return 1;
         return 1;
-    }
-    return value() - casted.value();
+
+    if (value() == casted.value())
+        return 0;
+
+    return value() < casted.value() ? -1 : 1;
 }
 }
 
 
 u32 IntegerImpl::hash() const
 u32 IntegerImpl::hash() const