[RFC PATCH 0/5] builtin/grep.c: fix a tiny logic flaw
- From
Rasmus Villemoes <rv@rasmusvillemoes.dk>
- Date
- Feb 12, 2019, 22:26 UTC
- Message-ID
- <20190212222654.7432-1-rv@rasmusvillemoes.dk>
Background: I noticed that the condition in add_work() for when the producer could add a new item was oddly different from the other conditions on the todo_* bookkeeping variables - namely, in the other cases we want todo_a != todo_b, whereas in add_work the condition is todo_a+1!=todo_b. Another hint that something is slightly off is that the code would break down if TODO_SIZE was set to 1.
The practical effect is negligible, and fixing it seems to be a bit involved, hence probably not worth the churn - and if that's the verdict, I suggest adding a comment in add_work() for future readers and/or people who copy the producer/consumer logic to their own code.
Rasmus Villemoes (5): builtin/grep.c: change todo_* variables to unsigned builtin/grep.c: refactor loop in work_done() slightly builtin/grep.c: add shorthand for &todo[todo_end] in add_work() builtin/grep.c: add todo_item helper builtin/grep.c: fix fence-post error in add_work()
builtin/grep.c | 40 ++++++++++++++++++++++++---------------- 1 file changed, 24 insertions(+), 16 deletions(-)
-- 2.20.1