vim-patch:9.1.0451: No test for escaping '<' with shellescape()

Problem:  No test for escaping '<' with shellescape()
Solution: Add a test.  Use memcpy() in code to make it easier to
          understand.  Fix a typo (zeertzjq).

closes: vim/vim#14876

88c8c547d5
This commit is contained in:
zeertzjq
2024-05-31 05:50:57 +08:00
parent df2c3b204b
commit 2de12e9bd7
3 changed files with 9 additions and 5 deletions

View File

@@ -266,11 +266,11 @@ char *vim_strsave_shellescape(const char *string, bool do_special, bool do_newli
*d++ = *p++;
continue;
}
if (do_special && find_cmdline_var(p, &l) >= 0 && l > 0) {
if (do_special && find_cmdline_var(p, &l) >= 0) {
*d++ = '\\'; // insert backslash
do { // copy the var
*d++ = *p++;
} while (--l > 0);
memcpy(d, p, l); // copy the var
d += l;
p += l;
continue;
}
if (*p == '\\' && fish_like) {