vim-patch:9.0.2124: INT overflow detection logic can be simplified

Problem:  INT overflow logic can be simplified
Solution: introduce trim_to_int() function

closes: vim/vim#13556

2b0882fa65

vim-patch:9.0.2138: Overflow logic requires long long

Problem:  Overflow logic requires long long
Solution: Define vimlong_T data type to make life easier
          for porters

closes: vim/vim#13598

fda700cb04

Cherry-pick ops.c change from patch 9.1.0608.

Co-authored-by: Ernie Rael <errael@raelity.com>
This commit is contained in:
zeertzjq
2024-12-10 13:48:59 +08:00
parent 7a7ed0c8ac
commit 6c81c16e1b
3 changed files with 14 additions and 14 deletions

View File

@@ -48,6 +48,7 @@
#include "nvim/macros_defs.h"
#include "nvim/mark.h"
#include "nvim/mark_defs.h"
#include "nvim/math.h"
#include "nvim/mbyte.h"
#include "nvim/mbyte_defs.h"
#include "nvim/memline.h"
@@ -286,8 +287,8 @@ void shift_line(bool left, bool round, int amount, int call_changed_bytes)
int64_t count = get_indent(); // get current indent
if (round) { // round off indent
int i = (int)(count / sw_val); // number of 'shiftwidth' rounded down
int j = (int)(count % sw_val); // extra spaces
int i = trim_to_int(count / sw_val); // number of 'shiftwidth' rounded down
int j = trim_to_int(count % sw_val); // extra spaces
if (j && left) { // first remove extra spaces
amount--;
}
@@ -305,15 +306,11 @@ void shift_line(bool left, bool round, int amount, int call_changed_bytes)
}
}
if (count > INT_MAX) {
count = INT_MAX;
}
// Set new indent
if (State & VREPLACE_FLAG) {
change_indent(INDENT_SET, (int)count, false, call_changed_bytes);
change_indent(INDENT_SET, trim_to_int(count), false, call_changed_bytes);
} else {
set_indent((int)count, call_changed_bytes ? SIN_CHANGED : 0);
set_indent(trim_to_int(count), call_changed_bytes ? SIN_CHANGED : 0);
}
}