comparison src/list.c @ 27453:c7f614c9ceb3 v8.2.4255

patch 8.2.4255: theoretical computation overflow Commit: https://github.com/vim/vim/commit/d5cec1f1f055316c353cfa15ad8d5eb0952d50a0 Author: =?UTF-8?q?Dundar=20G=C3=B6c?= <gocdundar@gmail.com> Date: Sat Jan 29 15:19:23 2022 +0000 patch 8.2.4255: theoretical computation overflow Problem: Theoretical computation overflow. Solution: Perform multiplication in a wider type. (closes https://github.com/vim/vim/issues/9657)
author Bram Moolenaar <Bram@vim.org>
date Sat, 29 Jan 2022 16:30:03 +0100
parents ec54436eda32
children f00a7a2bee21
comparison
equal deleted inserted replaced
27452:81af1f0ff8ce 27453:c7f614c9ceb3
2900 (char_u *)N_("reverse() argument"), TRUE)) 2900 (char_u *)N_("reverse() argument"), TRUE))
2901 { 2901 {
2902 if (l->lv_first == &range_list_item) 2902 if (l->lv_first == &range_list_item)
2903 { 2903 {
2904 varnumber_T new_start = l->lv_u.nonmat.lv_start 2904 varnumber_T new_start = l->lv_u.nonmat.lv_start
2905 + (l->lv_len - 1) * l->lv_u.nonmat.lv_stride; 2905 + ((varnumber_T)l->lv_len - 1) * l->lv_u.nonmat.lv_stride;
2906 l->lv_u.nonmat.lv_end = new_start 2906 l->lv_u.nonmat.lv_end = new_start
2907 - (l->lv_u.nonmat.lv_end - l->lv_u.nonmat.lv_start); 2907 - (l->lv_u.nonmat.lv_end - l->lv_u.nonmat.lv_start);
2908 l->lv_u.nonmat.lv_start = new_start; 2908 l->lv_u.nonmat.lv_start = new_start;
2909 l->lv_u.nonmat.lv_stride = -l->lv_u.nonmat.lv_stride; 2909 l->lv_u.nonmat.lv_stride = -l->lv_u.nonmat.lv_stride;
2910 return; 2910 return;