aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/eval.c53
-rw-r--r--src/eval.h2
2 files changed, 25 insertions, 30 deletions
diff --git a/src/eval.c b/src/eval.c
index b7b3bd45ee..87a79c022d 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -5550,23 +5550,21 @@ void list_append_dict(list_T *list, dict_T *dict)
/*
* Make a copy of "str" and append it as an item to list "l".
* When "len" >= 0 use "str[len]".
- * Returns FAIL when out of memory.
*/
-int list_append_string(list_T *l, char_u *str, int len)
+void list_append_string(list_T *l, char_u *str, int len)
{
listitem_T *li = listitem_alloc();
- if (li == NULL)
- return FAIL;
list_append(l, li);
li->li_tv.v_type = VAR_STRING;
li->li_tv.v_lock = 0;
- if (str == NULL)
+
+ if (str == NULL) {
li->li_tv.vval.v_string = NULL;
- else if ((li->li_tv.vval.v_string = (len >= 0 ? vim_strnsave(str, len)
- : vim_strsave(str))) == NULL)
- return FAIL;
- return OK;
+ } else {
+ li->li_tv.vval.v_string = (len >= 0) ? vim_strnsave(str, len)
+ : vim_strsave(str);
+ }
}
/*
@@ -9432,10 +9430,10 @@ static void get_buffer_lines(buf_T *buf, linenr_T start, linenr_T end, int retli
start = 1;
if (end > buf->b_ml.ml_line_count)
end = buf->b_ml.ml_line_count;
- while (start <= end)
- if (list_append_string(rettv->vval.v_list,
- ml_get_buf(buf, start++, FALSE), -1) == FAIL)
- break;
+ while (start <= end) {
+ list_append_string(
+ rettv->vval.v_list, ml_get_buf(buf, start++, FALSE), -1);
+ }
}
}
@@ -11566,14 +11564,12 @@ static void find_some_match(typval_T *argvars, typval_T *rettv, int type)
/* return list with matched string and submatches */
for (i = 0; i < NSUBEXP; ++i) {
if (regmatch.endp[i] == NULL) {
- if (list_append_string(rettv->vval.v_list,
- (char_u *)"", 0) == FAIL)
- break;
- } else if (list_append_string(rettv->vval.v_list,
- regmatch.startp[i],
- (int)(regmatch.endp[i] - regmatch.startp[i]))
- == FAIL)
- break;
+ list_append_string(rettv->vval.v_list, (char_u *)"", 0);
+ } else {
+ list_append_string(rettv->vval.v_list,
+ regmatch.startp[i],
+ (int)(regmatch.endp[i] - regmatch.startp[i]));
+ }
}
} else if (type == 2) {
/* return matched string */
@@ -14120,9 +14116,7 @@ static void f_split(typval_T *argvars, typval_T *rettv)
if (keepempty || end > str || (rettv->vval.v_list->lv_len > 0
&& *str != NUL && match && end <
regmatch.endp[0])) {
- if (list_append_string(rettv->vval.v_list, str,
- (int)(end - str)) == FAIL)
- break;
+ list_append_string(rettv->vval.v_list, str, (int)(end - str));
}
if (!match)
break;
@@ -14859,7 +14853,6 @@ static void f_tagfiles(typval_T *argvars, typval_T *rettv)
{
char_u *fname;
tagname_T tn;
- int first;
if (rettv_list_alloc(rettv) == FAIL)
return;
@@ -14867,10 +14860,12 @@ static void f_tagfiles(typval_T *argvars, typval_T *rettv)
if (fname == NULL)
return;
- for (first = TRUE;; first = FALSE)
- if (get_tagfname(&tn, first, fname) == FAIL
- || list_append_string(rettv->vval.v_list, fname, -1) == FAIL)
- break;
+ int first = TRUE;
+ while (get_tagfname(&tn, first, fname) == OK) {
+ list_append_string(rettv->vval.v_list, fname, -1);
+ first = FALSE;
+ }
+
tagname_free(&tn);
vim_free(fname);
}
diff --git a/src/eval.h b/src/eval.h
index 6c3c00c5db..5738a01684 100644
--- a/src/eval.h
+++ b/src/eval.h
@@ -65,7 +65,7 @@ char_u *list_find_str(list_T *l, long idx);
void list_append(list_T *l, listitem_T *item);
int list_append_tv(list_T *l, typval_T *tv);
void list_append_dict(list_T *list, dict_T *dict);
-int list_append_string(list_T *l, char_u *str, int len);
+void list_append_string(list_T *l, char_u *str, int len);
int list_insert_tv(list_T *l, typval_T *tv, listitem_T *item);
void list_remove(list_T *l, listitem_T *item, listitem_T *item2);
void list_insert(list_T *l, listitem_T *ni, listitem_T *item);