diff options
Diffstat (limited to 'bin/sh/arith_yacc.c')
-rw-r--r-- | bin/sh/arith_yacc.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/bin/sh/arith_yacc.c b/bin/sh/arith_yacc.c index 815d885..5000c6b 100644 --- a/bin/sh/arith_yacc.c +++ b/bin/sh/arith_yacc.c @@ -139,9 +139,9 @@ static arith_t do_binop(int op, arith_t a, arith_t b) case ARITH_SUB: return (uintmax_t)a - (uintmax_t)b; case ARITH_LSHIFT: - return (uintmax_t)a << b; + return (uintmax_t)a << (b & (sizeof(uintmax_t) * CHAR_BIT - 1)); case ARITH_RSHIFT: - return a >> b; + return a >> (b & (sizeof(uintmax_t) * CHAR_BIT - 1)); case ARITH_LT: return a < b; case ARITH_LE: |