Allocate cached_refs objects dynamically
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
db4dd93a4a
commit
e5dbf6056f
28
refs.c
28
refs.c
@ -157,7 +157,7 @@ static struct cached_refs {
|
|||||||
char did_packed;
|
char did_packed;
|
||||||
struct ref_list *loose;
|
struct ref_list *loose;
|
||||||
struct ref_list *packed;
|
struct ref_list *packed;
|
||||||
} cached_refs, submodule_refs;
|
} *cached_refs, *submodule_refs;
|
||||||
static struct ref_list *current_ref;
|
static struct ref_list *current_ref;
|
||||||
|
|
||||||
static struct ref_list *extra_refs;
|
static struct ref_list *extra_refs;
|
||||||
@ -181,6 +181,15 @@ static void clear_cached_refs(struct cached_refs *ca)
|
|||||||
ca->did_loose = ca->did_packed = 0;
|
ca->did_loose = ca->did_packed = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct cached_refs *create_cached_refs(void)
|
||||||
|
{
|
||||||
|
struct cached_refs *refs;
|
||||||
|
refs = xmalloc(sizeof(struct cached_refs));
|
||||||
|
refs->did_loose = refs->did_packed = 0;
|
||||||
|
refs->loose = refs->packed = NULL;
|
||||||
|
return refs;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Return a pointer to a cached_refs for the specified submodule. For
|
* Return a pointer to a cached_refs for the specified submodule. For
|
||||||
* the main repository, use submodule==NULL. The returned structure
|
* the main repository, use submodule==NULL. The returned structure
|
||||||
@ -189,12 +198,17 @@ static void clear_cached_refs(struct cached_refs *ca)
|
|||||||
*/
|
*/
|
||||||
static struct cached_refs *get_cached_refs(const char *submodule)
|
static struct cached_refs *get_cached_refs(const char *submodule)
|
||||||
{
|
{
|
||||||
if (!submodule)
|
if (!submodule) {
|
||||||
return &cached_refs;
|
if (!cached_refs)
|
||||||
else {
|
cached_refs = create_cached_refs();
|
||||||
/* For now, don't reuse the refs cache for submodules. */
|
return cached_refs;
|
||||||
clear_cached_refs(&submodule_refs);
|
} else {
|
||||||
return &submodule_refs;
|
if (!submodule_refs)
|
||||||
|
submodule_refs = create_cached_refs();
|
||||||
|
else
|
||||||
|
/* For now, don't reuse the refs cache for submodules. */
|
||||||
|
clear_cached_refs(submodule_refs);
|
||||||
|
return submodule_refs;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user