diff --git a/src/interpreter.h b/src/interpreter.h index bc75da036a810197b191316bb312eac735088a78..f856c8ecec9231b3607e2a3c1895cceb080c3c3e 100644 --- a/src/interpreter.h +++ b/src/interpreter.h @@ -655,9 +655,12 @@ static int eval_instruction(unsigned char *pc) CASE(F_DEC_AND_POP); { union anything *u=get_pointer_if_this_type(sp-2, T_INT); - if(u) + if(u +#ifdef AUTO_BIGNUM + && !INT_TYPE_SUB_OVERFLOW(u->integer, 1) +#endif +) { - /* FIXME: Bignum. */ instr=-- u->integer; pop_n_elems(2); }else{ @@ -985,7 +988,7 @@ static int eval_instruction(unsigned char *pc) break; } - /* FIXME: Does this need bignum tests? */ + /* FIXME: Does this need bignum tests? /Fixed - Hubbe */ LOOP(F_INC_LOOP, 1, <, is_lt); LOOP(F_DEC_LOOP, -1, >, is_gt); LOOP(F_INC_NEQ_LOOP, 1, !=, !is_eq);