diff options
author | Michael Haggerty <mhagger@alum.mit.edu> | 2011-08-13 00:36:28 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-08-14 15:18:52 -0700 |
commit | ce40979cf83c4c92421f9dd56cc4eabb67c85f29 (patch) | |
tree | 4669c23e71a009a0b4470a66930247aab5ed985a /refs.c | |
parent | e5dbf6056faecbd9a3c5510f5c5cd73de10374b8 (diff) | |
download | git-ce40979cf83c4c92421f9dd56cc4eabb67c85f29.tar.gz git-ce40979cf83c4c92421f9dd56cc4eabb67c85f29.tar.xz |
Store the submodule name in struct cached_refs
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'refs.c')
-rw-r--r-- | refs.c | 15 |
1 files changed, 11 insertions, 4 deletions
@@ -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(void) +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); |