diff options
author | Rachel Dowdall <rjdowdall@gmail.com> | 2014-03-20 22:40:38 +0000 |
---|---|---|
committer | Rachel Dowdall <rjdowdall@gmail.com> | 2014-03-20 22:40:38 +0000 |
commit | 300c8bd4c2c0c6d626a6aaeb873c22a8f8b9fc3f (patch) | |
tree | 96a2e445c19b7535a708b89aeddc378727366148 /py/objfloat.c | |
parent | a2f2f734ed5ee1294a44592448e5b0f45a12e254 (diff) | |
download | micropython-300c8bd4c2c0c6d626a6aaeb873c22a8f8b9fc3f.tar.gz micropython-300c8bd4c2c0c6d626a6aaeb873c22a8f8b9fc3f.zip |
Added ZeroDivisionError to float division.
Diffstat (limited to 'py/objfloat.c')
-rw-r--r-- | py/objfloat.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/py/objfloat.c b/py/objfloat.c index 401c1145ee..704b3d5998 100644 --- a/py/objfloat.c +++ b/py/objfloat.c @@ -1,5 +1,6 @@ #include <stdlib.h> #include <assert.h> +#include <math.h> #include "nlr.h" #include "misc.h" @@ -105,8 +106,12 @@ mp_obj_t mp_obj_float_binary_op(int op, mp_float_t lhs_val, mp_obj_t rhs_in) { case RT_BINARY_OP_INPLACE_FLOOR_DIVIDE: val = lhs_val / rhs_val; break; */ case RT_BINARY_OP_TRUE_DIVIDE: - case RT_BINARY_OP_INPLACE_TRUE_DIVIDE: lhs_val /= rhs_val; break; - + case RT_BINARY_OP_INPLACE_TRUE_DIVIDE: + lhs_val /= rhs_val; + if (isinf(lhs_val)){ // check for division by zero + nlr_jump(mp_obj_new_exception_msg(&mp_type_ZeroDivisionError, "float division by zero")); + } + break; case RT_BINARY_OP_LESS: return MP_BOOL(lhs_val < rhs_val); case RT_BINARY_OP_MORE: return MP_BOOL(lhs_val > rhs_val); case RT_BINARY_OP_LESS_EQUAL: return MP_BOOL(lhs_val <= rhs_val); |