comparison src/ex_cmds2.c @ 10182:40f6ce4fe30e v7.4.2361

commit https://github.com/vim/vim/commit/ee39ef0b93d31763d05e54ba99801e3f1a254c0d Author: Bram Moolenaar <Bram@vim.org> Date: Sat Sep 10 19:17:42 2016 +0200 patch 7.4.2361 Problem: Checking for last_timer_id to overflow is not reliable. (Ozaki Kiichi) Solution: Check for the number not going up.
author Christian Brabandt <cb@256bit.org>
date Sat, 10 Sep 2016 19:30:06 +0200
parents 3db463d4df25
children d69ee8806ec9
comparison
equal deleted inserted replaced
10181:4584cd99e7ea 10182:40f6ce4fe30e
1141 */ 1141 */
1142 timer_T * 1142 timer_T *
1143 create_timer(long msec, int repeat) 1143 create_timer(long msec, int repeat)
1144 { 1144 {
1145 timer_T *timer = (timer_T *)alloc_clear(sizeof(timer_T)); 1145 timer_T *timer = (timer_T *)alloc_clear(sizeof(timer_T));
1146 long prev_id = last_timer_id;
1146 1147
1147 if (timer == NULL) 1148 if (timer == NULL)
1148 return NULL; 1149 return NULL;
1149 if (++last_timer_id < 0) 1150 if (++last_timer_id <= prev_id)
1150 /* Overflow! Might cause duplicates... */ 1151 /* Overflow! Might cause duplicates... */
1151 last_timer_id = 0; 1152 last_timer_id = 0;
1152 timer->tr_id = last_timer_id; 1153 timer->tr_id = last_timer_id;
1153 insert_timer(timer); 1154 insert_timer(timer);
1154 if (repeat != 0) 1155 if (repeat != 0)