Mercurial > vim
diff 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 |
line wrap: on
line diff
--- a/src/list.c +++ b/src/list.c @@ -2902,7 +2902,7 @@ list_reverse(list_T *l, typval_T *rettv) if (l->lv_first == &range_list_item) { varnumber_T new_start = l->lv_u.nonmat.lv_start - + (l->lv_len - 1) * l->lv_u.nonmat.lv_stride; + + ((varnumber_T)l->lv_len - 1) * l->lv_u.nonmat.lv_stride; l->lv_u.nonmat.lv_end = new_start - (l->lv_u.nonmat.lv_end - l->lv_u.nonmat.lv_start); l->lv_u.nonmat.lv_start = new_start;