[PATCH 5/6] Store the submodule name in struct cached_refs.
From: Michael Haggerty <hidden>
Date: 2016-06-15 22:51:48
Subsystem:
the rest · Maintainer:
Linus Torvalds
Signed-off-by: Michael Haggerty <redacted> --- refs.c | 15 +++++++++++---- 1 files changed, 11 insertions(+), 4 deletions(-)
diff --git a/refs.c b/refs.c
index 102ed03..8d1055d 100644
--- a/refs.c
+++ b/refs.c@@ -157,6 +157,8 @@ static struct cached_refs { char did_packed; struct ref_list *loose; struct ref_list *packed; + /* The submodule name, or "" for the main repo. */ + char name[FLEX_ARRAY]; } *cached_refs, *submodule_refs; static struct ref_list *current_ref;
@@ -181,12 +183,17 @@ static void clear_cached_refs(struct cached_refs *ca) ca->did_loose = ca->did_packed = 0; } -struct cached_refs *create_cached_refs() +struct cached_refs *create_cached_refs(const char *submodule) { + int len; struct cached_refs *refs; - refs = xmalloc(sizeof(struct cached_refs)); + if (!submodule) + submodule = ""; + len = strlen(submodule) + 1; + refs = xmalloc(sizeof(struct cached_refs) + len); refs->did_loose = refs->did_packed = 0; refs->loose = refs->packed = NULL; + memcpy(refs->name, submodule, len); return refs; }
@@ -200,11 +207,11 @@ static struct cached_refs *get_cached_refs(const char *submodule) { if (! submodule) { if (!cached_refs) - cached_refs = create_cached_refs(); + cached_refs = create_cached_refs(submodule); return cached_refs; } else { if (!submodule_refs) - submodule_refs = create_cached_refs(); + submodule_refs = create_cached_refs(submodule); else /* For now, don't reuse the refs cache for submodules. */ clear_cached_refs(submodule_refs);
--
1.7.6.8.gd2879