0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.2.1455: Vim9: crash when using typecast before constant

Problem:    Vim9: crash when using typecast before constant.
Solution:   Generate constant before checking type.  Add tets.
This commit is contained in:
Bram Moolenaar
2020-08-14 22:44:25 +02:00
parent 79e8db9a21
commit d1103587cf
3 changed files with 12 additions and 2 deletions

View File

@@ -3501,11 +3501,12 @@ compile_expr7t(char_u **arg, cctx_T *cctx, ppconst_T *ppconst)
if (want_type != NULL)
{
garray_T *stack = &cctx->ctx_type_stack;
type_T *actual = ((type_T **)stack->ga_data)[stack->ga_len - 1];
type_T *actual;
generate_ppconst(cctx, ppconst);
actual = ((type_T **)stack->ga_data)[stack->ga_len - 1];
if (check_type(want_type, actual, FALSE) == FAIL)
{
generate_ppconst(cctx, ppconst);
if (need_type(actual, want_type, -1, cctx, FALSE) == FAIL)
return FAIL;
}
@@ -5016,6 +5017,7 @@ compile_assignment(char_u *arg, exarg_T *eap, cmdidx_T cmdidx, cctx_T *cctx)
goto theend;
if (*skipwhite(p) != ']')
{
// this should not happen
emsg(_(e_missbrac));
goto theend;
}