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);