summaryrefslogtreecommitdiff
path: root/crawler.c
diff options
context:
space:
mode:
authorCalin Iorgulescu <calin.iorgulescu@gmail.com>2018-03-15 20:35:26 +0100
committerdormando <dormando@rydia.net>2018-03-19 15:17:28 -0700
commit593b6006ac1d466b1d3a61aece84d73ab87f7940 (patch)
tree981a828ae9b23110c39757c7fb492fb35370f8dd /crawler.c
parente0e897c4c44d09f524681c95a38fc69b30a21cb3 (diff)
downloadmemcached-593b6006ac1d466b1d3a61aece84d73ab87f7940.tar.gz
Fixes decrement-before-check problem (issue #362).
Adds test for issue #362.
Diffstat (limited to 'crawler.c')
-rw-r--r--crawler.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/crawler.c b/crawler.c
index 9c81bba..07fca4d 100644
--- a/crawler.c
+++ b/crawler.c
@@ -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;