On Mon, Feb 01, 2021 at 05:15:05PM +0000, Derrick Stolee via GitGitGadget wrote: > diff --git a/commit-graph.c b/commit-graph.c > index edbb3a0f2cc..13992137dd0 100644 > --- a/commit-graph.c > +++ b/commit-graph.c > @@ -614,19 +614,26 @@ static struct commit_graph *load_commit_graph_chain(struct repository *r, > return graph_chain; > } > > -static void validate_mixed_generation_chain(struct commit_graph *g) > +/* > + * returns 1 if and only if all graphs in the chain have > + * corrected commit dates stored in the generation_data chunk. > + */ > +static int validate_mixed_generation_chain(struct commit_graph *g) Thanks for the comment. It does make me wonder if the function name needs updating, though. I'm having some trouble coming up with a better alternative, though, so maybe it's fine... > { > - int read_generation_data; > + int read_generation_data = 1; OK, we might not ever enter the while loops below, so this needs initializing. > + struct commit_graph *p = g; > > - if (!g) > - return; > - > - read_generation_data = !!g->chunk_generation_data; > + while (read_generation_data && p) { > + read_generation_data = p->read_generation_data; > + p = p->base_graph; > + } This could probably be guarded with an 'if !read_generation_data', since if the previous while loop always read '1' from 'p->read_generation_data', then nothing needs updating, no? (If you do make this change, please don't add '!read_generation_data' to the while expression, since it isn't a property of the loop.) > while (g) { > g->read_generation_data = read_generation_data; > g = g->base_graph; > } > + > + return read_generation_data; > } > > struct commit_graph *read_commit_graph_one(struct repository *r, > -- > gitgitgadget > Thanks, Taylor