comparison src/vim9execute.c @ 26626:4d18b3a5254a v8.2.3842

patch 8.2.3842: Vim9: can change locked list and list items Commit: https://github.com/vim/vim/commit/422085f1c87cb6bea879158b8b05c4a5cf7ab48b Author: Bram Moolenaar <Bram@vim.org> Date: Fri Dec 17 20:36:15 2021 +0000 patch 8.2.3842: Vim9: can change locked list and list items Problem: Vim9: can change locked list and list items. Solution: Check that a list and list item isn't locked.
author Bram Moolenaar <Bram@vim.org>
date Fri, 17 Dec 2021 21:45:03 +0100
parents bdf11d8e3df3
children 2fc1e528e0e1
comparison
equal deleted inserted replaced
26625:05e524ae9236 26626:4d18b3a5254a
2896 } 2896 }
2897 else 2897 else
2898 { 2898 {
2899 list_T *l = tv_dest->vval.v_list; 2899 list_T *l = tv_dest->vval.v_list;
2900 long n = (long)tv_idx->vval.v_number; 2900 long n = (long)tv_idx->vval.v_number;
2901 listitem_T *li = NULL; 2901
2902 2902 if (l != NULL && value_check_lock(
2903 li = list_find(l, n); 2903 l->lv_lock, NULL, FALSE))
2904 if (li == NULL) 2904 status = FAIL;
2905 else
2905 { 2906 {
2906 SOURCING_LNUM = iptr->isn_lnum; 2907 listitem_T *li = list_find(l, n);
2907 semsg(_(e_listidx), n); 2908
2908 status = FAIL; 2909 if (li == NULL)
2910 {
2911 SOURCING_LNUM = iptr->isn_lnum;
2912 semsg(_(e_listidx), n);
2913 status = FAIL;
2914 }
2915 else if (value_check_lock(li->li_tv.v_lock,
2916 NULL, FALSE))
2917 status = FAIL;
2918 else
2919 listitem_remove(l, li);
2909 } 2920 }
2910 else
2911 // TODO: check for list or item locked
2912 listitem_remove(l, li);
2913 } 2921 }
2914 } 2922 }
2915 else 2923 else
2916 { 2924 {
2917 status = FAIL; 2925 status = FAIL;