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)
}
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)
{
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
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
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 3585,
/**/
3584,
/**/