1
0
forked from aniani/vim

patch 7.4.2332

Problem:    Crash when stop_timer() is called in a callback of a callback.
            Vim hangs when the timer callback uses too much time.
Solution:   Set tr_id to -1 when a timer is to be deleted. Don't keep calling
            callbacks forever. (Ozaki Kiichi)
This commit is contained in:
Bram Moolenaar
2016-09-05 22:45:28 +02:00
parent 33a80eeb85
commit 75537a93e9
6 changed files with 131 additions and 82 deletions

View File

@@ -3166,12 +3166,13 @@ typedef struct js_reader js_read_T;
typedef struct timer_S timer_T;
struct timer_S
{
int tr_id;
long tr_id;
#ifdef FEAT_TIMERS
timer_T *tr_next;
timer_T *tr_prev;
proftime_T tr_due; /* when the callback is to be invoked */
int tr_paused; /* when TRUE callback is not invoked */
char tr_firing; /* when TRUE callback is being called */
char tr_paused; /* when TRUE callback is not invoked */
int tr_repeat; /* number of times to repeat, -1 forever */
long tr_interval; /* msec */
char_u *tr_callback; /* allocated */