Mercurial > vim
comparison src/eval.c @ 26775:2df40c348c70 v8.2.3916
patch 8.2.3916: no error for passing an invalid line number to append()
Commit: https://github.com/vim/vim/commit/8dac2acd6a79d571ff5409d9c90b4c9e73237eb4
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Dec 27 20:57:06 2021 +0000
patch 8.2.3916: no error for passing an invalid line number to append()
Problem: No error for passing an invalid line number to append().
Solution: In Vim9 script check for a non-negative number. (closes https://github.com/vim/vim/issues/9417)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Mon, 27 Dec 2021 22:00:04 +0100 |
parents | 6f8d3470fa90 |
children | bce848ec8b1b |
comparison
equal
deleted
inserted
replaced
26774:73cedd119ce2 | 26775:2df40c348c70 |
---|---|
5357 return NULL; | 5357 return NULL; |
5358 | 5358 |
5359 name = tv_get_string_chk(varp); | 5359 name = tv_get_string_chk(varp); |
5360 if (name == NULL) | 5360 if (name == NULL) |
5361 return NULL; | 5361 return NULL; |
5362 if (name[0] == '.') // cursor | 5362 if (name[0] == '.' && (!in_vim9script() || name[1] == NUL)) |
5363 { | 5363 { |
5364 // cursor | |
5364 pos = curwin->w_cursor; | 5365 pos = curwin->w_cursor; |
5365 if (charcol) | 5366 if (charcol) |
5366 pos.col = buf_byteidx_to_charidx(curbuf, pos.lnum, pos.col); | 5367 pos.col = buf_byteidx_to_charidx(curbuf, pos.lnum, pos.col); |
5367 return &pos; | 5368 return &pos; |
5368 } | 5369 } |
5374 pos = curwin->w_cursor; | 5375 pos = curwin->w_cursor; |
5375 if (charcol) | 5376 if (charcol) |
5376 pos.col = buf_byteidx_to_charidx(curbuf, pos.lnum, pos.col); | 5377 pos.col = buf_byteidx_to_charidx(curbuf, pos.lnum, pos.col); |
5377 return &pos; | 5378 return &pos; |
5378 } | 5379 } |
5379 if (name[0] == '\'') // mark | 5380 if (name[0] == '\'' && (!in_vim9script() |
5380 { | 5381 || (name[1] != NUL && name[2] == NUL))) |
5382 { | |
5383 // mark | |
5381 pp = getmark_buf_fnum(curbuf, name[1], FALSE, fnum); | 5384 pp = getmark_buf_fnum(curbuf, name[1], FALSE, fnum); |
5382 if (pp == NULL || pp == (pos_T *)-1 || pp->lnum <= 0) | 5385 if (pp == NULL || pp == (pos_T *)-1 || pp->lnum <= 0) |
5383 return NULL; | 5386 return NULL; |
5384 if (charcol) | 5387 if (charcol) |
5385 pp->col = buf_byteidx_to_charidx(curbuf, pp->lnum, pp->col); | 5388 pp->col = buf_byteidx_to_charidx(curbuf, pp->lnum, pp->col); |