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,