comparison src/eval.c @ 28968:3043a3e2ef95 v8.2.5006

patch 8.2.5006: asan warns for undefined behavior Commit: https://github.com/vim/vim/commit/68e64d2c1735f2a39afa8a0475ae29bedb116684 Author: Bram Moolenaar <Bram@vim.org> Date: Sun May 22 22:07:52 2022 +0100 patch 8.2.5006: asan warns for undefined behavior Problem: Asan warns for undefined behavior. Solution: Cast the shifted value to unsigned.
author Bram Moolenaar <Bram@vim.org>
date Sun, 22 May 2022 23:15:03 +0200
parents 8973f2f00872
children 45c182c4f7e9
comparison
equal deleted inserted replaced
28967:13d66390ef26 28968:3043a3e2ef95
3087 if (var2.vval.v_number > MAX_LSHIFT_BITS) 3087 if (var2.vval.v_number > MAX_LSHIFT_BITS)
3088 // shifting more bits than we have always results in zero 3088 // shifting more bits than we have always results in zero
3089 rettv->vval.v_number = 0; 3089 rettv->vval.v_number = 0;
3090 else if (type == EXPR_LSHIFT) 3090 else if (type == EXPR_LSHIFT)
3091 rettv->vval.v_number = 3091 rettv->vval.v_number =
3092 rettv->vval.v_number << var2.vval.v_number; 3092 (uvarnumber_T)rettv->vval.v_number << var2.vval.v_number;
3093 else 3093 else
3094 rettv->vval.v_number = 3094 rettv->vval.v_number =
3095 (uvarnumber_T)rettv->vval.v_number >> var2.vval.v_number; 3095 (uvarnumber_T)rettv->vval.v_number >> var2.vval.v_number;
3096 } 3096 }
3097 3097