From 3445320839a38b3b0c253513b125da8298ec27d6 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sun, 31 Jan 2021 13:08:38 +0100 Subject: patch 8.2.2435: setline() gives an error for some types Problem: setline() gives an error for some types. Solution: Allow any type, convert each item to a string. --- src/evalbuffer.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/evalbuffer.c') diff --git a/src/evalbuffer.c b/src/evalbuffer.c index 3fed3893e9..2ba2f679a5 100644 --- a/src/evalbuffer.c +++ b/src/evalbuffer.c @@ -128,7 +128,8 @@ find_win_for_curbuf(void) } /* - * Set line or list of lines in buffer "buf". + * Set line or list of lines in buffer "buf" to "lines". + * Any type is allowed and converted to a string. */ static void set_buffer_lines( @@ -187,7 +188,7 @@ set_buffer_lines( li = l->lv_first; } else - line = tv_get_string_chk(lines); + line = typval_tostring(lines, FALSE); // default result is zero == OK for (;;) @@ -197,7 +198,8 @@ set_buffer_lines( // list argument, get next string if (li == NULL) break; - line = tv_get_string_chk(&li->li_tv); + vim_free(line); + line = typval_tostring(&li->li_tv, FALSE); li = li->li_next; } @@ -238,6 +240,7 @@ set_buffer_lines( break; ++lnum; } + vim_free(line); if (added > 0) { -- cgit v1.2.3