changeset 25182:14448e7acdb2 v8.2.3127

patch 8.2.3127: Vim9: no error when adding number to list of string Commit: https://github.com/vim/vim/commit/f32f099761e5ae0603149b305a0086e4f4627d81 Author: Bram Moolenaar <Bram@vim.org> Date: Thu Jul 8 20:53:40 2021 +0200 patch 8.2.3127: Vim9: no error when adding number to list of string Problem: Vim9: no error when adding number to list of string. Solution: Check the value type. (closes https://github.com/vim/vim/issues/8529)
author Bram Moolenaar <Bram@vim.org>
date Thu, 08 Jul 2021 21:00:04 +0200
parents 123653459cee
children e0cd3f2fa919
files src/list.c src/testdir/test_vim9_builtin.vim src/version.c
diffstat 3 files changed, 13 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/list.c
+++ b/src/list.c
@@ -597,13 +597,16 @@ list_append(list_T *l, listitem_T *item)
 
 /*
  * Append typval_T "tv" to the end of list "l".  "tv" is copied.
- * Return FAIL when out of memory.
+ * Return FAIL when out of memory or the type is wrong.
  */
     int
 list_append_tv(list_T *l, typval_T *tv)
 {
     listitem_T	*li = listitem_alloc();
 
+    if (l->lv_type != NULL && l->lv_type->tt_member != NULL
+		&& check_typval_arg_type(l->lv_type->tt_member, tv, 0) == FAIL)
+	return FAIL;
     if (li == NULL)
 	return FAIL;
     copy_tv(tv, &li->li_tv);
--- a/src/testdir/test_vim9_builtin.vim
+++ b/src/testdir/test_vim9_builtin.vim
@@ -104,6 +104,13 @@ def Test_add_list()
       add(l, 123)
   END
   CheckScriptSuccess(lines)
+
+  lines =<< trim END
+      vim9script
+      var l: list<string> = ['a']
+      l->add(123)
+  END
+  CheckScriptFailure(lines, 'E1012: Type mismatch; expected string but got number', 3)
 enddef
 
 def Test_add_blob()
--- a/src/version.c
+++ b/src/version.c
@@ -756,6 +756,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3127,
+/**/
     3126,
 /**/
     3125,