patch 8.2.5004: right shift on negative number does not work as documented
Problem: Right shift on negative number does not work as documented.
Solution: Use a uvarnumber_T type cast.
diff --git a/src/vim9execute.c b/src/vim9execute.c
index b4fd9d5..5410aa2 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -4096,12 +4096,7 @@
case EXPR_RSHIFT: if (arg2 > MAX_LSHIFT_BITS)
res = 0;
else
- {
- res = arg1 >> arg2;
- // clear the topmost sign bit
- res &= ~((uvarnumber_T)1
- << MAX_LSHIFT_BITS);
- }
+ res = (uvarnumber_T)arg1 >> arg2;
break;
default: break;
}