diff --git a/src/builtin.c b/src/builtin.c index 2d1156dc..e8eb2ef3 100644 --- a/src/builtin.c +++ b/src/builtin.c @@ -381,7 +381,7 @@ static jv f_multiply(jq_state *jq, jv input, jv a, jv b) { static jv f_divide(jq_state *jq, jv input, jv a, jv b) { jv_free(input); if (jv_get_kind(a) == JV_KIND_NUMBER && jv_get_kind(b) == JV_KIND_NUMBER) { - if (jv_number_value(b) == 0.0) + if (jv_number_value(b) == 0.0 && jv_number_value(a) != 0.0) return type_error2(a, b, "cannot be divided because the divisor is zero"); jv r = jv_number(jv_number_value(a) / jv_number_value(b)); jv_free(a); diff --git a/tests/jq.test b/tests/jq.test index e62949b7..8a7ccc0e 100644 --- a/tests/jq.test +++ b/tests/jq.test @@ -1578,6 +1578,11 @@ try (1/.) catch . 0 "number (1) and number (0) cannot be divided because the divisor is zero" +0/0, (0 as $x | $x/0) | isnan +0 +true +true + try (1%.) catch . 0 "number (1) and number (0) cannot be divided (remainder) because the divisor is zero"