[Core] Correctly handle float division in Scalar.
authorDavide Italiano <davide@freebsd.org>
Tue, 27 Mar 2018 18:37:54 +0000 (18:37 +0000)
committerDavide Italiano <davide@freebsd.org>
Tue, 27 Mar 2018 18:37:54 +0000 (18:37 +0000)
Patch by Tom Tromey!

Differential Revision:  https://reviews.llvm.org/D44693

llvm-svn: 328649

lldb/source/Core/Scalar.cpp
lldb/unittests/Core/ScalarTest.cpp

index 630083b..4ef29e7 100644 (file)
@@ -2266,7 +2266,7 @@ const Scalar lldb_private::operator/(const Scalar &lhs, const Scalar &rhs) {
     case Scalar::e_float:
     case Scalar::e_double:
     case Scalar::e_long_double:
-      if (b->m_float.isZero()) {
+      if (!b->m_float.isZero()) {
         result.m_float = a->m_float / b->m_float;
         return result;
       }
index fedcd19..47fa021 100644 (file)
@@ -132,3 +132,11 @@ TEST(ScalarTest, GetValue) {
   EXPECT_EQ(std::to_string(std::numeric_limits<unsigned long long>::max()),
             ScalarGetValue(std::numeric_limits<unsigned long long>::max()));
 }
+
+TEST(ScalarTest, Division) {
+  Scalar lhs(5.0);
+  Scalar rhs(2.0);
+  Scalar r = lhs / rhs;
+  EXPECT_TRUE(r.IsValid());
+  EXPECT_EQ(r, Scalar(2.5));
+}