Mercurial > vim
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) |