vim-patch:9.0.1434: crash when adding package already in 'runtimepath' (#22849)

Problem:    Crash when adding package already in 'runtimepath'.
Solution:   Change order for using 'runtimepath' entries. (closes vim/vim#12215)

39c9ec16ea
This commit is contained in:
zeertzjq
2023-04-01 21:34:55 +08:00
committed by GitHub
parent 75e1b1d5c9
commit 4f66530af1
2 changed files with 21 additions and 13 deletions

View File

@@ -914,19 +914,6 @@ static int add_pack_dir_to_rtp(char *fname, bool is_pack)
const char *cur_entry = entry;
copy_option_part((char **)&entry, buf, MAXPATHL, ",");
if (insp == NULL) {
add_pathsep(buf);
char *const rtp_ffname = fix_fname(buf);
if (rtp_ffname == NULL) {
goto theend;
}
bool match = path_fnamencmp(rtp_ffname, ffname, fname_len) == 0;
xfree(rtp_ffname);
if (match) {
// Insert "ffname" after this entry (and comma).
insp = entry;
}
}
if ((p = strstr(buf, "after")) != NULL
&& p > buf
@@ -940,6 +927,20 @@ static int add_pack_dir_to_rtp(char *fname, bool is_pack)
after_insp = cur_entry;
break;
}
if (insp == NULL) {
add_pathsep(buf);
char *const rtp_ffname = fix_fname(buf);
if (rtp_ffname == NULL) {
goto theend;
}
bool match = path_fnamencmp(rtp_ffname, ffname, fname_len) == 0;
xfree(rtp_ffname);
if (match) {
// Insert "ffname" after this entry (and comma).
insp = entry;
}
}
}
if (insp == NULL) {

View File

@@ -20,6 +20,13 @@ func Test_packadd()
call mkdir(s:plugdir . '/plugin/also', 'p')
call mkdir(s:plugdir . '/ftdetect', 'p')
call mkdir(s:plugdir . '/after', 'p')
" This used to crash Vim
let &rtp = 'nosuchdir,' . s:plugdir . '/after'
packadd mytest
" plugdir should be inserted before plugdir/after
call assert_match('^nosuchdir,' . s:plugdir . ',', &rtp)
set rtp&
let rtp = &rtp
filetype on