forked from aniani/vim
patch 9.0.0224: Using NULL pointer when skipping compiled code
Problem: Using NULL pointer when skipping compiled code. Solution: Check for skipping.
This commit is contained in:
parent
5fd6ab820b
commit
4875d6ab06
@ -2097,6 +2097,19 @@ def Test_for_skipped_block()
|
|||||||
v9.CheckDefAndScriptSuccess(lines)
|
v9.CheckDefAndScriptSuccess(lines)
|
||||||
enddef
|
enddef
|
||||||
|
|
||||||
|
def Test_skipped_redir()
|
||||||
|
var lines =<< trim END
|
||||||
|
def T()
|
||||||
|
if 0
|
||||||
|
redir =>l[0]
|
||||||
|
redir END
|
||||||
|
endif
|
||||||
|
enddef
|
||||||
|
defcompile
|
||||||
|
END
|
||||||
|
v9.CheckScriptSuccess(lines)
|
||||||
|
enddef
|
||||||
|
|
||||||
def Test_for_loop()
|
def Test_for_loop()
|
||||||
var lines =<< trim END
|
var lines =<< trim END
|
||||||
var result = ''
|
var result = ''
|
||||||
|
@ -731,6 +731,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
224,
|
||||||
/**/
|
/**/
|
||||||
223,
|
223,
|
||||||
/**/
|
/**/
|
||||||
|
@ -1165,11 +1165,14 @@ generate_loadvar(
|
|||||||
generate_LOADV(cctx, name + 2);
|
generate_LOADV(cctx, name + 2);
|
||||||
break;
|
break;
|
||||||
case dest_local:
|
case dest_local:
|
||||||
if (lvar->lv_from_outer > 0)
|
if (cctx->ctx_skip != SKIP_YES)
|
||||||
generate_LOADOUTER(cctx, lvar->lv_idx, lvar->lv_from_outer,
|
{
|
||||||
|
if (lvar->lv_from_outer > 0)
|
||||||
|
generate_LOADOUTER(cctx, lvar->lv_idx, lvar->lv_from_outer,
|
||||||
type);
|
type);
|
||||||
else
|
else
|
||||||
generate_LOAD(cctx, ISN_LOAD, lvar->lv_idx, NULL, type);
|
generate_LOAD(cctx, ISN_LOAD, lvar->lv_idx, NULL, type);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case dest_expr:
|
case dest_expr:
|
||||||
// list or dict value should already be on the stack.
|
// list or dict value should already be on the stack.
|
||||||
@ -1952,6 +1955,9 @@ compile_assign_unlet(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cctx->ctx_skip == SKIP_YES)
|
||||||
|
return OK;
|
||||||
|
|
||||||
// Load the dict or list. On the stack we then have:
|
// Load the dict or list. On the stack we then have:
|
||||||
// - value (for assignment, not for :unlet)
|
// - value (for assignment, not for :unlet)
|
||||||
// - index
|
// - index
|
||||||
|
Loading…
x
Reference in New Issue
Block a user