mirror of
https://github.com/vim/vim.git
synced 2025-09-29 04:34:16 -04:00
patch 8.0.1817: a timer may change v:count unexpectedly
Problem: A timer may change v:count unexpectedly. Solution: Save and restore v:count and similar variables when a timer callback is invoked. (closes #2897)
This commit is contained in:
23
src/eval.c
23
src/eval.c
@@ -6461,6 +6461,29 @@ set_vcount(
|
||||
vimvars[VV_COUNT1].vv_nr = count1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Save variables that might be changed as a side effect. Used when executing
|
||||
* a timer callback.
|
||||
*/
|
||||
void
|
||||
save_vimvars(vimvars_save_T *vvsave)
|
||||
{
|
||||
vvsave->vv_prevcount = vimvars[VV_PREVCOUNT].vv_nr;
|
||||
vvsave->vv_count = vimvars[VV_COUNT].vv_nr;
|
||||
vvsave->vv_count1 = vimvars[VV_COUNT1].vv_nr;
|
||||
}
|
||||
|
||||
/*
|
||||
* Restore variables saved by save_vimvars().
|
||||
*/
|
||||
void
|
||||
restore_vimvars(vimvars_save_T *vvsave)
|
||||
{
|
||||
vimvars[VV_PREVCOUNT].vv_nr = vvsave->vv_prevcount;
|
||||
vimvars[VV_COUNT].vv_nr = vvsave->vv_count;
|
||||
vimvars[VV_COUNT1].vv_nr = vvsave->vv_count1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Set string v: variable to a copy of "val".
|
||||
*/
|
||||
|
Reference in New Issue
Block a user