vim-patch:8.0.1004: matchstrpos() without a match returns too many items

Problem:    Matchstrpos() without a match returns too many items.
Solution:   Also remove the second item when the position is beyond the end of
            the string. (Hirohito Higashi)  Use an enum for the type.
8d9f0ef5c6
This commit is contained in:
Jan Edmund Lazo
2018-08-08 21:47:35 -04:00
parent 0b3555b5dd
commit 3c6eb9871a
2 changed files with 3 additions and 6 deletions

View File

@@ -12424,13 +12424,13 @@ static void find_some_match(typval_T *const argvars, typval_T *const rettv,
vim_regfree(regmatch.regprog);
}
if (type == kSomeMatchStrPos && l == NULL) {
theend:
if (type == kSomeMatchStrPos && l == NULL && rettv->vval.v_list != NULL) {
// matchstrpos() without a list: drop the second item
list_T *const ret_l = rettv->vval.v_list;
tv_list_item_remove(ret_l, TV_LIST_ITEM_NEXT(ret_l, tv_list_first(ret_l)));
}
theend:
xfree(tofree);
p_cpo = save_cpo;
}