diff --git a/src/operators.c b/src/operators.c index b2c0f8d4d802f3318f08a289af4c52ae131fc8e8..de71968978fa817763d3a16277572c79ff640bfb 100644 --- a/src/operators.c +++ b/src/operators.c @@ -3401,6 +3401,10 @@ static int generate_xor(node *n) PMOD_EXPORT void o_lsh(void) { + if (sp[-1].u.integer < 0) { + int args = 2; + SIMPLE_BAD_ARG_ERROR("`<<", 2, "int(0..)|object"); + } if ((TYPEOF(sp[-1]) == T_INT) && (TYPEOF(sp[-2]) == T_INT) && INT_TYPE_LSH_OVERFLOW(sp[-2].u.integer, sp[-1].u.integer)) convert_stack_top_to_bignum(); @@ -3416,10 +3420,6 @@ PMOD_EXPORT void o_lsh(void) SIMPLE_BAD_ARG_ERROR("`<<", 2, "int(0..)|object"); } - if (sp[-1].u.integer < 0) { - int args = 2; - SIMPLE_BAD_ARG_ERROR("`<<", 2, "int(0..)|object"); - } sp--; SET_SVAL(sp[-1], T_INT, NUMBER_NUMBER, integer, sp[-1].u.integer << sp->u.integer);