diff options
Diffstat (limited to 'src/evalfunc.c')
-rw-r--r-- | src/evalfunc.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/evalfunc.c b/src/evalfunc.c index 4376318d0d..169f972c24 100644 --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -7922,7 +7922,7 @@ range_list_materialize(list_T *list) { varnumber_T start = list->lv_u.nonmat.lv_start; varnumber_T end = list->lv_u.nonmat.lv_end; - int stride = list->lv_u.nonmat.lv_stride; + int stride = list->lv_u.nonmat.lv_stride; varnumber_T i; list->lv_first = NULL; @@ -7930,8 +7930,13 @@ range_list_materialize(list_T *list) list->lv_len = 0; list->lv_u.mat.lv_idx_item = NULL; for (i = start; stride > 0 ? i <= end : i >= end; i += stride) + { if (list_append_number(list, (varnumber_T)i) == FAIL) break; + if (list->lv_lock & VAR_ITEMS_LOCKED) + list->lv_u.mat.lv_last->li_tv.v_lock = VAR_LOCKED; + } + list->lv_lock &= ~VAR_ITEMS_LOCKED; } /* |