mirror of
https://github.com/git/git.git
synced 2025-12-05 18:47:16 -06:00
All callers of clear_alloc_state() immediately free what they cleared, so currently it does not hurt anybody that the alloc_state is left in an unreusable state, but it is an error-prone API. Replace it with a new function that clears but in addition frees the structure, as well as NULLing the pointer that points at it and adjust existing callers. As it is a moral equivalent of FREE_AND_NULL(), except that what it frees has internal structure that needs to be cleaned, allow the helper to be called twice in a row, by making a call with a pointer to a pointer variable that already is NULLed. While at it, rename allocate_alloc_state() and name the new function alloc_state_free_and_null(), to follow more closely the function naming convention specified in the CodingGuidelines (namely, functions about S are named with S_ prefix and then verb). Signed-off-by: ノウラ | Flare <nouraellm@gmail.com> Helped-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
21 lines
493 B
C
21 lines
493 B
C
#ifndef ALLOC_H
|
|
#define ALLOC_H
|
|
|
|
struct alloc_state;
|
|
struct tree;
|
|
struct commit;
|
|
struct tag;
|
|
struct repository;
|
|
|
|
void *alloc_blob_node(struct repository *r);
|
|
void *alloc_tree_node(struct repository *r);
|
|
void init_commit_node(struct commit *c);
|
|
void *alloc_commit_node(struct repository *r);
|
|
void *alloc_tag_node(struct repository *r);
|
|
void *alloc_object_node(struct repository *r);
|
|
|
|
struct alloc_state *alloc_state_alloc(void);
|
|
void alloc_state_free_and_null(struct alloc_state **s_);
|
|
|
|
#endif
|