diff options
author | Junio C Hamano <gitster@pobox.com> | 2014-01-28 13:55:59 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2014-02-24 14:44:57 -0800 |
commit | 7b1004b0ba6637e8c299ee8f927de5426139495c (patch) | |
tree | 6127fed901c8d8d52db795bb4e7fe7b278c6787f /t/t4022-diff-rewrite.sh | |
parent | combine-diff: combine_diff_path.len is not needed anymore (diff) | |
download | tgif-7b1004b0ba6637e8c299ee8f927de5426139495c.tar.xz |
combine-diff: simplify intersect_paths() further
Linus once said:
I actually wish more people understood the really core low-level
kind of coding. Not big, complex stuff like the lockless name
lookup, but simply good use of pointers-to-pointers etc. For
example, I've seen too many people who delete a singly-linked
list entry by keeping track of the "prev" entry, and then to
delete the entry, doing something like
if (prev)
prev->next = entry->next;
else
list_head = entry->next;
and whenever I see code like that, I just go "This person
doesn't understand pointers". And it's sadly quite common.
People who understand pointers just use a "pointer to the entry
pointer", and initialize that with the address of the
list_head. And then as they traverse the list, they can remove
the entry without using any conditionals, by just doing a "*pp =
entry->next".
Applying that simplification lets us lose 7 lines from this function
even while adding 2 lines of comment.
I was tempted to squash this into the original commit, but because
the benchmarking described in the commit log is without this
simplification, I decided to keep it a separate follow-up patch.
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t4022-diff-rewrite.sh')
0 files changed, 0 insertions, 0 deletions