summaryrefslogtreecommitdiffstats
path: root/src/eval.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2022-05-22 20:16:32 +0100
committerBram Moolenaar <Bram@vim.org>2022-05-22 20:16:32 +0100
commit338bf58eba758585ffef3fdfdba7d48477aacb7c (patch)
tree5ae6ce8b90f6aaaa06eb6d2192c9102c59fdd3b1 /src/eval.c
parenta061f34191712df7dde7716705fe0ec074e9758e (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.c6
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);