From 9d68e9ccdd4d7f4ecb7a8765ca694e355753d686 Mon Sep 17 00:00:00 2001 From: Damien George Date: Wed, 12 Mar 2014 15:38:15 +0000 Subject: py: Implement integer overflow checking for * and << ops. If operation will overflow, a multi-precision integer is created. --- py/objint.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'py/objint.c') diff --git a/py/objint.c b/py/objint.c index 490b4340b..7a9b0366d 100644 --- a/py/objint.c +++ b/py/objint.c @@ -71,6 +71,12 @@ mp_obj_t mp_obj_new_int_from_long_str(const char *s) { return mp_const_none; } +// This is called when an integer larger than a SMALL_INT is needed (although val might still fit in a SMALL_INT) +mp_obj_t mp_obj_new_int_from_ll(long long val) { + nlr_jump(mp_obj_new_exception_msg(&mp_type_OverflowError, "small int overflow")); + return mp_const_none; +} + mp_obj_t mp_obj_new_int_from_uint(machine_uint_t value) { // SMALL_INT accepts only signed numbers, of one bit less size // then word size, which totals 2 bits less for unsigned numbers. -- cgit v1.2.3