aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/os
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2025-01-24 08:52:55 +0800
committerGitHub <noreply@github.com>2025-01-24 00:52:55 +0000
commit2470db02c5136525b8abce1ee0889d94f8d81d98 (patch)
tree07418e7e683c431f1e39a76c875fa53273d5410e /src/nvim/os
parent8bc28978b632362ae658f8d4a6327e07a8b371b2 (diff)
downloadrneovim-2470db02c5136525b8abce1ee0889d94f8d81d98.tar.gz
rneovim-2470db02c5136525b8abce1ee0889d94f8d81d98.tar.bz2
rneovim-2470db02c5136525b8abce1ee0889d94f8d81d98.zip
vim-patch:partial:9.1.1050: too many strlen() calls in os_unix.c (#32188)
Problem: too many strlen() calls in os_unix.c Solution: refactor os_unix.c and remove calls to strlen() (John Marriott) closes: vim/vim#16496 https://github.com/vim/vim/commit/efc41a5958bf25b352e0916af5f57dafbbb44f17 Omit os_expand_wildcards() change: Nvim's code is more complicated and harder to refactor. Co-authored-by: John Marriott <basilisk@internode.on.net>
Diffstat (limited to 'src/nvim/os')
-rw-r--r--src/nvim/os/fs.c6
-rw-r--r--src/nvim/os/shell.c10
2 files changed, 9 insertions, 7 deletions
diff --git a/src/nvim/os/fs.c b/src/nvim/os/fs.c
index d0da37b8e7..451994241d 100644
--- a/src/nvim/os/fs.c
+++ b/src/nvim/os/fs.c
@@ -370,8 +370,8 @@ static bool is_executable_in_path(const char *name, char **abspath)
char *path = xstrdup(path_env);
#endif
- size_t buf_len = strlen(name) + strlen(path) + 2;
- char *buf = xmalloc(buf_len);
+ const size_t bufsize = strlen(name) + strlen(path) + 2;
+ char *buf = xmalloc(bufsize);
// Walk through all entries in $PATH to check if "name" exists there and
// is an executable file.
@@ -382,7 +382,7 @@ static bool is_executable_in_path(const char *name, char **abspath)
// Combine the $PATH segment with `name`.
xmemcpyz(buf, p, (size_t)(e - p));
- (void)append_path(buf, name, buf_len);
+ (void)append_path(buf, name, bufsize);
#ifdef MSWIN
if (is_executable_ext(buf, abspath)) {
diff --git a/src/nvim/os/shell.c b/src/nvim/os/shell.c
index 5347c8db9a..d60d0b3e55 100644
--- a/src/nvim/os/shell.c
+++ b/src/nvim/os/shell.c
@@ -1208,10 +1208,11 @@ static void read_input(StringBuilder *buf)
size_t len = 0;
linenr_T lnum = curbuf->b_op_start.lnum;
char *lp = ml_get(lnum);
+ size_t lplen = (size_t)ml_get_len(lnum);
while (true) {
- size_t l = strlen(lp + written);
- if (l == 0) {
+ lplen -= written;
+ if (lplen == 0) {
len = 0;
} else if (lp[written] == NL) {
// NL -> NUL translation
@@ -1219,11 +1220,11 @@ static void read_input(StringBuilder *buf)
kv_push(*buf, NUL);
} else {
char *s = vim_strchr(lp + written, NL);
- len = s == NULL ? l : (size_t)(s - (lp + written));
+ len = s == NULL ? lplen : (size_t)(s - (lp + written));
kv_concat_len(*buf, lp + written, len);
}
- if (len == l) {
+ if (len == lplen) {
// Finished a line, add a NL, unless this line should not have one.
if (lnum != curbuf->b_op_end.lnum
|| (!curbuf->b_p_bin && curbuf->b_p_fixeol)
@@ -1236,6 +1237,7 @@ static void read_input(StringBuilder *buf)
break;
}
lp = ml_get(lnum);
+ lplen = (size_t)ml_get_len(lnum);
written = 0;
} else if (len > 0) {
written += len;