diff --git a/DSView/pv/data/mathstack.cpp b/DSView/pv/data/mathstack.cpp index 41fb48d5..817768ad 100644 --- a/DSView/pv/data/mathstack.cpp +++ b/DSView/pv/data/mathstack.cpp @@ -203,28 +203,34 @@ uint64_t MathStack::default_vDialValue() uint64_t MathStack::default_factor() { uint64_t value = 0; - const uint64_t factor1 = _dsoSig1->get_vDial()->get_factor(); + const uint64_t factor1 = _dsoSig1->get_vDial()->get_factor(); const uint64_t factor2 = _dsoSig2->get_vDial()->get_factor(); + assert(factor1 > 0); + assert(factor2 > 0); const uint64_t v1 = _dsoSig1->get_vDial()->get_value() * factor1; const uint64_t v2 = _dsoSig2->get_vDial()->get_value() * factor2; switch(_type) { - case MATH_ADD: - case MATH_SUB: - value = v1 > v2 ? factor1 : factor2; - break; - case MATH_MUL: - value = factor1 * factor2; - break; - case MATH_DIV: - value = factor1 / factor2; - break; + case MATH_ADD: + case MATH_SUB: + value = v1 > v2 ? factor1 : factor2; + break; + case MATH_MUL: + value = factor1 * factor2; + break; + case MATH_DIV: + value = factor1 / factor2; + break; + } + + if (value == 0){ + value = 1; } return value; } -view::dslDial * MathStack::get_vDial() +view::dslDial* MathStack::get_vDial() { QVector vValue; QVector vUnit; diff --git a/DSView/pv/view/dsldial.cpp b/DSView/pv/view/dsldial.cpp index f51f9ea4..0453b3e0 100644 --- a/DSView/pv/view/dsldial.cpp +++ b/DSView/pv/view/dsldial.cpp @@ -187,7 +187,9 @@ void dslDial::set_value(uint64_t value) } void dslDial::set_factor(uint64_t factor) -{ +{ + assert(factor > 0); + if (_factor != factor) { _factor = factor; }