diff options
author | Calin Iorgulescu <calin.iorgulescu@gmail.com> | 2018-03-15 20:35:26 +0100 |
---|---|---|
committer | dormando <dormando@rydia.net> | 2018-03-19 15:17:28 -0700 |
commit | 593b6006ac1d466b1d3a61aece84d73ab87f7940 (patch) | |
tree | 981a828ae9b23110c39757c7fb492fb35370f8dd /crawler.c | |
parent | e0e897c4c44d09f524681c95a38fc69b30a21cb3 (diff) | |
download | memcached-593b6006ac1d466b1d3a61aece84d73ab87f7940.tar.gz |
Fixes decrement-before-check problem (issue #362).
Adds test for issue #362.
Diffstat (limited to 'crawler.c')
-rw-r--r-- | crawler.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -533,6 +533,14 @@ static int do_lru_crawler_start(uint32_t id, uint32_t remaining) { if (remaining == LRU_CRAWLER_CAP_REMAINING) { remaining = do_get_lru_size(sid); } + /* Values for remaining: + * remaining = 0 + * - scan all elements, until a NULL is reached + * - if empty, NULL is reached right away + * remaining = n + 1 + * - first n elements are parsed (or until a NULL is reached) + */ + if (remaining) remaining++; crawlers[sid].remaining = remaining; crawlers[sid].slabs_clsid = sid; crawlers[sid].reclaimed = 0; |