Re: [PATCH 3/5] commit-graph: validate layers for generation data
From: Taylor Blau <hidden>
Date: 2021-02-01 17:41:06
On Mon, Feb 01, 2021 at 05:15:05PM +0000, Derrick Stolee via GitGitGadget wrote:
quoted hunk ↗ jump to hunk
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,
--
gitgitgadgetThanks, Taylor