Bugfix - prevent division by zero. (#1206)
This commit is contained in:
parent
e2352269c0
commit
d141605266
1 changed files with 22 additions and 3 deletions
|
@ -1230,9 +1230,28 @@ impl ops::Div for Value {
|
|||
type Output = Self;
|
||||
fn div(self, other: Self) -> Self {
|
||||
match (self, other) {
|
||||
(Value::Number(v), Value::Number(w)) => Value::Number(v / w),
|
||||
(Value::Datetime(v), Value::Duration(w)) => Value::Datetime(w / v),
|
||||
(v, w) => Value::from(v.as_number() / w.as_number()),
|
||||
(Value::Number(v), Value::Number(w)) => {
|
||||
if w == Number::Int(0) {
|
||||
Value::None
|
||||
} else {
|
||||
Value::Number(v / w)
|
||||
}
|
||||
}
|
||||
(Value::Datetime(v), Value::Duration(w)) => {
|
||||
if w.is_zero() {
|
||||
Value::None
|
||||
} else {
|
||||
Value::Datetime(w / v)
|
||||
}
|
||||
}
|
||||
(v, w) => {
|
||||
let w = w.as_number();
|
||||
if w == Number::Int(0) {
|
||||
Value::None
|
||||
} else {
|
||||
Value::from(v.as_number() / w)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue