Mercurial > vim
comparison src/eval.c @ 13892:eadecbe4e390 v8.0.1817
patch 8.0.1817: a timer may change v:count unexpectedly
commit https://github.com/vim/vim/commit/b0f42ba60d9e6d101d103421ba0c351811615c15
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat May 12 15:38:26 2018 +0200
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)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 12 May 2018 15:45:05 +0200 |
parents | 87012d2b17b5 |
children | e4d5726e1678 |
comparison
equal
deleted
inserted
replaced
13891:6418f95b0eb1 | 13892:eadecbe4e390 |
---|---|
6460 vimvars[VV_COUNT].vv_nr = count; | 6460 vimvars[VV_COUNT].vv_nr = count; |
6461 vimvars[VV_COUNT1].vv_nr = count1; | 6461 vimvars[VV_COUNT1].vv_nr = count1; |
6462 } | 6462 } |
6463 | 6463 |
6464 /* | 6464 /* |
6465 * Save variables that might be changed as a side effect. Used when executing | |
6466 * a timer callback. | |
6467 */ | |
6468 void | |
6469 save_vimvars(vimvars_save_T *vvsave) | |
6470 { | |
6471 vvsave->vv_prevcount = vimvars[VV_PREVCOUNT].vv_nr; | |
6472 vvsave->vv_count = vimvars[VV_COUNT].vv_nr; | |
6473 vvsave->vv_count1 = vimvars[VV_COUNT1].vv_nr; | |
6474 } | |
6475 | |
6476 /* | |
6477 * Restore variables saved by save_vimvars(). | |
6478 */ | |
6479 void | |
6480 restore_vimvars(vimvars_save_T *vvsave) | |
6481 { | |
6482 vimvars[VV_PREVCOUNT].vv_nr = vvsave->vv_prevcount; | |
6483 vimvars[VV_COUNT].vv_nr = vvsave->vv_count; | |
6484 vimvars[VV_COUNT1].vv_nr = vvsave->vv_count1; | |
6485 } | |
6486 | |
6487 /* | |
6465 * Set string v: variable to a copy of "val". | 6488 * Set string v: variable to a copy of "val". |
6466 */ | 6489 */ |
6467 void | 6490 void |
6468 set_vim_var_string( | 6491 set_vim_var_string( |
6469 int idx, | 6492 int idx, |