object: clear grafts when clearing parsed object pool
We do not clear grafts part of the parsed object pool when clearing the pool itself, which can lead to memory leaks when a repository is being cleared. Fix this by moving `reset_commit_grafts()` into "object.c" and making it part of the `struct parsed_object_pool` interface such that we can call it from `parsed_object_pool_clear()`. Adapt `parsed_object_pool_new()` to take and store a reference to its owning repository, which is needed by `unparse_commit()`. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
b8849e236f
commit
0d1d22f5a3
3
commit.h
3
commit.h
@ -108,6 +108,8 @@ static inline int repo_parse_commit_no_graph(struct repository *r,
|
||||
|
||||
void parse_commit_or_die(struct commit *item);
|
||||
|
||||
void unparse_commit(struct repository *r, const struct object_id *oid);
|
||||
|
||||
struct buffer_slab;
|
||||
struct buffer_slab *allocate_commit_buffer_slab(void);
|
||||
void free_commit_buffer_slab(struct buffer_slab *bs);
|
||||
@ -240,7 +242,6 @@ int commit_graft_pos(struct repository *r, const struct object_id *oid);
|
||||
int register_commit_graft(struct repository *r, struct commit_graft *, int);
|
||||
void prepare_commit_graft(struct repository *r);
|
||||
struct commit_graft *lookup_commit_graft(struct repository *r, const struct object_id *oid);
|
||||
void reset_commit_grafts(struct repository *r);
|
||||
|
||||
struct commit *get_fork_point(const char *refname, struct commit *commit);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user