diff options
author | Bram Moolenaar <Bram@vim.org> | 2022-05-22 20:16:32 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2022-05-22 20:16:32 +0100 |
commit | 338bf58eba758585ffef3fdfdba7d48477aacb7c (patch) | |
tree | 5ae6ce8b90f6aaaa06eb6d2192c9102c59fdd3b1 /src/eval.c | |
parent | a061f34191712df7dde7716705fe0ec074e9758e (diff) |
patch 8.2.5004: right shift on negative number does not work as documentedv8.2.5004
Problem: Right shift on negative number does not work as documented.
Solution: Use a uvarnumber_T type cast.
Diffstat (limited to 'src/eval.c')
-rw-r--r-- | src/eval.c | 6 |
1 files changed, 1 insertions, 5 deletions
diff --git a/src/eval.c b/src/eval.c index 0ac2dfb358..7f90954667 100644 --- a/src/eval.c +++ b/src/eval.c @@ -3091,12 +3091,8 @@ eval5(char_u **arg, typval_T *rettv, evalarg_T *evalarg) rettv->vval.v_number = rettv->vval.v_number << var2.vval.v_number; else - { rettv->vval.v_number = - rettv->vval.v_number >> var2.vval.v_number; - // clear the topmost sign bit - rettv->vval.v_number &= ~((uvarnumber_T)1 << MAX_LSHIFT_BITS); - } + (uvarnumber_T)rettv->vval.v_number >> var2.vval.v_number; } clear_tv(&var2); |