mirror of
https://github.com/vim/vim.git
synced 2025-09-30 04:44:14 -04:00
patch 8.2.3585: crash when passing float to "term_rows" of term_start()
Problem: Crash when passing float to "term_rows" in the options argument of term_start(). (Virginia Senioria) Solution: Bail out if the argument is not a number. (closes #9116)
This commit is contained in:
@@ -424,10 +424,14 @@ get_job_options(typval_T *tv, jobopt_T *opt, int supported, int supported2)
|
||||
}
|
||||
else if (STRCMP(hi->hi_key, "term_rows") == 0)
|
||||
{
|
||||
int error = FALSE;
|
||||
|
||||
if (!(supported2 & JO2_TERM_ROWS))
|
||||
break;
|
||||
opt->jo_set2 |= JO2_TERM_ROWS;
|
||||
opt->jo_term_rows = tv_get_number(item);
|
||||
opt->jo_term_rows = tv_get_number_chk(item, &error);
|
||||
if (error)
|
||||
return FAIL;
|
||||
}
|
||||
else if (STRCMP(hi->hi_key, "term_cols") == 0)
|
||||
{
|
||||
|
@@ -4473,7 +4473,8 @@ static VTermStateFallbacks state_fallbacks = {
|
||||
static void *
|
||||
vterm_malloc(size_t size, void *data UNUSED)
|
||||
{
|
||||
return alloc_clear(size);
|
||||
// make sure that the length is not zero
|
||||
return alloc_clear(size == 0 ? 1L : size);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@@ -467,6 +467,10 @@ func Test_terminal_size()
|
||||
bwipe!
|
||||
call assert_equal([7, 27], size)
|
||||
|
||||
if has('float')
|
||||
call assert_fails("call term_start(cmd, {'term_rows': 10.0})", 'E805:')
|
||||
endif
|
||||
|
||||
call delete('Xtext')
|
||||
endfunc
|
||||
|
||||
|
@@ -757,6 +757,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
3585,
|
||||
/**/
|
||||
3584,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user