* [PATCH] maintenance: use xcalloc instead of xmalloc where possible @ 2022-12-05 14:48 Rose via GitGitGadget 2022-12-05 15:01 ` Jeff Hostetler 2022-12-05 15:33 ` [PATCH v2] " Rose via GitGitGadget 0 siblings, 2 replies; 16+ messages in thread From: Rose via GitGitGadget @ 2022-12-05 14:48 UTC (permalink / raw) To: git; +Cc: Rose, Seija From: Seija <doremylover123@gmail.com> We can avoid having to call memset by calling xcalloc directly Signed-off-by: Seija doremylover123@gmail.com --- maintenance: use xcalloc instead of xmalloc where possible We can avoid having to call memset by calling xcalloc directly Signed-off-by: Seija doremylover123@gmail.com Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1390%2FAtariDreams%2Fcalloc-v1 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1390/AtariDreams/calloc-v1 Pull-Request: https://github.com/git/git/pull/1390 remote.c | 4 +--- submodule.c | 3 +-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/remote.c b/remote.c index 60869beebe7..75315f3563f 100644 --- a/remote.c +++ b/remote.c @@ -2741,9 +2741,7 @@ void apply_push_cas(struct push_cas_option *cas, struct remote_state *remote_state_new(void) { - struct remote_state *r = xmalloc(sizeof(*r)); - - memset(r, 0, sizeof(*r)); + struct remote_state *r = xcalloc(1, sizeof(*r)); hashmap_init(&r->remotes_hash, remotes_hash_cmp, NULL, 0); hashmap_init(&r->branches_hash, branches_hash_cmp, NULL, 0); diff --git a/submodule.c b/submodule.c index 8ac2fca855d..4ca4f6c6590 100644 --- a/submodule.c +++ b/submodule.c @@ -1464,8 +1464,7 @@ static const struct submodule *get_non_gitmodules_submodule(const char *path) if (!name) return NULL; - ret = xmalloc(sizeof(*ret)); - memset(ret, 0, sizeof(*ret)); + ret = xcalloc(1, sizeof(*ret)); ret->path = name; ret->name = name; base-commit: 805265fcf7a737664a8321aaf4a0587b78435184 -- gitgitgadget ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH] maintenance: use xcalloc instead of xmalloc where possible 2022-12-05 14:48 [PATCH] maintenance: use xcalloc instead of xmalloc where possible Rose via GitGitGadget @ 2022-12-05 15:01 ` Jeff Hostetler 2022-12-05 15:33 ` [PATCH v2] " Rose via GitGitGadget 1 sibling, 0 replies; 16+ messages in thread From: Jeff Hostetler @ 2022-12-05 15:01 UTC (permalink / raw) To: Rose via GitGitGadget, git; +Cc: Rose, Seija On 12/5/22 9:48 AM, Rose via GitGitGadget wrote: > From: Seija <doremylover123@gmail.com> > > We can avoid having to call memset by calling xcalloc directly > > Signed-off-by: Seija doremylover123@gmail.com > --- > maintenance: use xcalloc instead of xmalloc where possible > > We can avoid having to call memset by calling xcalloc directly > > Signed-off-by: Seija doremylover123@gmail.com > > Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1390%2FAtariDreams%2Fcalloc-v1 > Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1390/AtariDreams/calloc-v1 > Pull-Request: https://github.com/git/git/pull/1390 > > remote.c | 4 +--- > submodule.c | 3 +-- > 2 files changed, 2 insertions(+), 5 deletions(-) > > diff --git a/remote.c b/remote.c > index 60869beebe7..75315f3563f 100644 > --- a/remote.c > +++ b/remote.c > @@ -2741,9 +2741,7 @@ void apply_push_cas(struct push_cas_option *cas, > > struct remote_state *remote_state_new(void) > { > - struct remote_state *r = xmalloc(sizeof(*r)); > - > - memset(r, 0, sizeof(*r)); > + struct remote_state *r = xcalloc(1, sizeof(*r)); > We have a macro to make this easier and hide the messy details: struct remote_state *r; CALLOC_ARRAY(r, 1); Jeff ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v2] maintenance: use xcalloc instead of xmalloc where possible 2022-12-05 14:48 [PATCH] maintenance: use xcalloc instead of xmalloc where possible Rose via GitGitGadget 2022-12-05 15:01 ` Jeff Hostetler @ 2022-12-05 15:33 ` Rose via GitGitGadget 2022-12-05 16:01 ` [PATCH v3] " Rose via GitGitGadget 1 sibling, 1 reply; 16+ messages in thread From: Rose via GitGitGadget @ 2022-12-05 15:33 UTC (permalink / raw) To: git; +Cc: Jeff Hostetler, Rose, Seija From: Seija <doremylover123@gmail.com> We can avoid having to call memset by calling xcalloc directly Signed-off-by: Seija doremylover123@gmail.com --- maintenance: use xcalloc instead of xmalloc where possible We can avoid having to call memset by calling xcalloc directly Signed-off-by: Seija doremylover123@gmail.com Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1390%2FAtariDreams%2Fcalloc-v2 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1390/AtariDreams/calloc-v2 Pull-Request: https://github.com/git/git/pull/1390 Range-diff vs v1: 1: f56282194a7 ! 1: ee8a7af6435 maintenance: use xcalloc instead of xmalloc where possible @@ remote.c: void apply_push_cas(struct push_cas_option *cas, struct remote_state *remote_state_new(void) { - struct remote_state *r = xmalloc(sizeof(*r)); -- ++ struct remote_state *r; + - memset(r, 0, sizeof(*r)); -+ struct remote_state *r = xcalloc(1, sizeof(*r)); ++ CALLOC_ARRAY(r, 1); hashmap_init(&r->remotes_hash, remotes_hash_cmp, NULL, 0); hashmap_init(&r->branches_hash, branches_hash_cmp, NULL, 0); ## submodule.c ## -@@ submodule.c: static const struct submodule *get_non_gitmodules_submodule(const char *path) +@@ submodule.c: struct fetch_task { + */ + static const struct submodule *get_non_gitmodules_submodule(const char *path) + { +- struct submodule *ret = NULL; ++ struct submodule *ret; + const char *name = default_name_or_path(path); + if (!name) return NULL; - ret = xmalloc(sizeof(*ret)); - memset(ret, 0, sizeof(*ret)); -+ ret = xcalloc(1, sizeof(*ret)); ++ CALLOC_ARRAY(ret, 1); ret->path = name; ret->name = name; remote.c | 4 ++-- submodule.c | 5 ++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/remote.c b/remote.c index 60869beebe7..475a1d18af0 100644 --- a/remote.c +++ b/remote.c @@ -2741,9 +2741,9 @@ void apply_push_cas(struct push_cas_option *cas, struct remote_state *remote_state_new(void) { - struct remote_state *r = xmalloc(sizeof(*r)); + struct remote_state *r; - memset(r, 0, sizeof(*r)); + CALLOC_ARRAY(r, 1); hashmap_init(&r->remotes_hash, remotes_hash_cmp, NULL, 0); hashmap_init(&r->branches_hash, branches_hash_cmp, NULL, 0); diff --git a/submodule.c b/submodule.c index 8ac2fca855d..d43774c7527 100644 --- a/submodule.c +++ b/submodule.c @@ -1458,14 +1458,13 @@ struct fetch_task { */ static const struct submodule *get_non_gitmodules_submodule(const char *path) { - struct submodule *ret = NULL; + struct submodule *ret; const char *name = default_name_or_path(path); if (!name) return NULL; - ret = xmalloc(sizeof(*ret)); - memset(ret, 0, sizeof(*ret)); + CALLOC_ARRAY(ret, 1); ret->path = name; ret->name = name; base-commit: 805265fcf7a737664a8321aaf4a0587b78435184 -- gitgitgadget ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v3] maintenance: use xcalloc instead of xmalloc where possible 2022-12-05 15:33 ` [PATCH v2] " Rose via GitGitGadget @ 2022-12-05 16:01 ` Rose via GitGitGadget 2022-12-05 16:12 ` [PATCH v4] maintenance: use calloc instead of malloc " Rose via GitGitGadget 0 siblings, 1 reply; 16+ messages in thread From: Rose via GitGitGadget @ 2022-12-05 16:01 UTC (permalink / raw) To: git; +Cc: Jeff Hostetler, Rose, Seija From: Seija <doremylover123@gmail.com> We can avoid having to call memset by calling xcalloc directly Signed-off-by: Seija doremylover123@gmail.com --- maintenance: use xcalloc instead of xmalloc where possible We can avoid having to call memset by calling xcalloc directly Signed-off-by: Seija doremylover123@gmail.com Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1390%2FAtariDreams%2Fcalloc-v3 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1390/AtariDreams/calloc-v3 Pull-Request: https://github.com/git/git/pull/1390 Range-diff vs v2: 1: ee8a7af6435 ! 1: b5cfec60048 maintenance: use xcalloc instead of xmalloc where possible @@ Commit message Signed-off-by: Seija doremylover123@gmail.com + ## builtin/pack-redundant.c ## +@@ builtin/pack-redundant.c: static inline struct llist_item *llist_item_get(void) + new_item = free_nodes; + free_nodes = free_nodes->next; + } else { +- int i = 1; ++ size_t i = 1; + ALLOC_ARRAY(new_item, BLKSIZE); + for (; i < BLKSIZE; i++) + llist_item_put(&new_item[i]); +@@ builtin/pack-redundant.c: static inline struct llist_item *llist_item_get(void) + + static inline void llist_init(struct llist **list) + { +- *list = xmalloc(sizeof(struct llist)); +- (*list)->front = (*list)->back = NULL; +- (*list)->size = 0; ++ CALLOC_ARRAY(*list, 1); + } + + static struct llist * llist_copy(struct llist *list) + ## remote.c ## @@ remote.c: void apply_push_cas(struct push_cas_option *cas, @@ submodule.c: struct fetch_task { ret->path = name; ret->name = name; +@@ submodule.c: static struct fetch_task *fetch_task_create(struct submodule_parallel_fetch *spf + const char *path, + const struct object_id *treeish_name) + { +- struct fetch_task *task = xmalloc(sizeof(*task)); +- memset(task, 0, sizeof(*task)); ++ struct fetch_task *task; ++ ++ CALLOC_ARRAY(task, 1); + + task->sub = submodule_from_path(spf->r, treeish_name, path); + + + ## xdiff/xutils.c ## +@@ xdiff/xutils.c: void *xdl_cha_alloc(chastore_t *cha) { + void *data; + + if (!(ancur = cha->ancur) || ancur->icurr == cha->nsize) { +- if (!(ancur = (chanode_t *) xdl_malloc(sizeof(chanode_t) + cha->nsize))) { ++ if (!(ancur = (chanode_t *) xdl_calloc(1, sizeof(chanode_t) + cha->nsize))) { + + return NULL; + } +- ancur->icurr = 0; +- ancur->next = NULL; + if (cha->tail) + cha->tail->next = ancur; + if (!cha->head) builtin/pack-redundant.c | 6 ++---- remote.c | 4 ++-- submodule.c | 10 +++++----- xdiff/xutils.c | 4 +--- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/builtin/pack-redundant.c b/builtin/pack-redundant.c index ecd49ca268f..0e184bb5212 100644 --- a/builtin/pack-redundant.c +++ b/builtin/pack-redundant.c @@ -51,7 +51,7 @@ static inline struct llist_item *llist_item_get(void) new_item = free_nodes; free_nodes = free_nodes->next; } else { - int i = 1; + size_t i = 1; ALLOC_ARRAY(new_item, BLKSIZE); for (; i < BLKSIZE; i++) llist_item_put(&new_item[i]); @@ -61,9 +61,7 @@ static inline struct llist_item *llist_item_get(void) static inline void llist_init(struct llist **list) { - *list = xmalloc(sizeof(struct llist)); - (*list)->front = (*list)->back = NULL; - (*list)->size = 0; + CALLOC_ARRAY(*list, 1); } static struct llist * llist_copy(struct llist *list) diff --git a/remote.c b/remote.c index 60869beebe7..475a1d18af0 100644 --- a/remote.c +++ b/remote.c @@ -2741,9 +2741,9 @@ void apply_push_cas(struct push_cas_option *cas, struct remote_state *remote_state_new(void) { - struct remote_state *r = xmalloc(sizeof(*r)); + struct remote_state *r; - memset(r, 0, sizeof(*r)); + CALLOC_ARRAY(r, 1); hashmap_init(&r->remotes_hash, remotes_hash_cmp, NULL, 0); hashmap_init(&r->branches_hash, branches_hash_cmp, NULL, 0); diff --git a/submodule.c b/submodule.c index 8ac2fca855d..015102a83d6 100644 --- a/submodule.c +++ b/submodule.c @@ -1458,14 +1458,13 @@ struct fetch_task { */ static const struct submodule *get_non_gitmodules_submodule(const char *path) { - struct submodule *ret = NULL; + struct submodule *ret; const char *name = default_name_or_path(path); if (!name) return NULL; - ret = xmalloc(sizeof(*ret)); - memset(ret, 0, sizeof(*ret)); + CALLOC_ARRAY(ret, 1); ret->path = name; ret->name = name; @@ -1504,8 +1503,9 @@ static struct fetch_task *fetch_task_create(struct submodule_parallel_fetch *spf const char *path, const struct object_id *treeish_name) { - struct fetch_task *task = xmalloc(sizeof(*task)); - memset(task, 0, sizeof(*task)); + struct fetch_task *task; + + CALLOC_ARRAY(task, 1); task->sub = submodule_from_path(spf->r, treeish_name, path); diff --git a/xdiff/xutils.c b/xdiff/xutils.c index 9e36f24875d..c19bc441a96 100644 --- a/xdiff/xutils.c +++ b/xdiff/xutils.c @@ -98,12 +98,10 @@ void *xdl_cha_alloc(chastore_t *cha) { void *data; if (!(ancur = cha->ancur) || ancur->icurr == cha->nsize) { - if (!(ancur = (chanode_t *) xdl_malloc(sizeof(chanode_t) + cha->nsize))) { + if (!(ancur = (chanode_t *) xdl_calloc(1, sizeof(chanode_t) + cha->nsize))) { return NULL; } - ancur->icurr = 0; - ancur->next = NULL; if (cha->tail) cha->tail->next = ancur; if (!cha->head) base-commit: 805265fcf7a737664a8321aaf4a0587b78435184 -- gitgitgadget ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v4] maintenance: use calloc instead of malloc where possible 2022-12-05 16:01 ` [PATCH v3] " Rose via GitGitGadget @ 2022-12-05 16:12 ` Rose via GitGitGadget 2022-12-06 5:03 ` Junio C Hamano 2022-12-06 17:38 ` [PATCH v5] revision: " Rose via GitGitGadget 0 siblings, 2 replies; 16+ messages in thread From: Rose via GitGitGadget @ 2022-12-05 16:12 UTC (permalink / raw) To: git; +Cc: Jeff Hostetler, Rose, Seija From: Seija <doremylover123@gmail.com> We can avoid having to call memset by calling calloc directly Signed-off-by: Seija doremylover123@gmail.com --- maintenance: use calloc instead of malloc where possible We can avoid having to call memset by calling calloc directly Signed-off-by: Seija doremylover123@gmail.com Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1390%2FAtariDreams%2Fcalloc-v4 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1390/AtariDreams/calloc-v4 Pull-Request: https://github.com/git/git/pull/1390 Range-diff vs v3: 1: b5cfec60048 ! 1: 3cd6b1eab13 maintenance: use xcalloc instead of xmalloc where possible @@ Metadata Author: Seija <doremylover123@gmail.com> ## Commit message ## - maintenance: use xcalloc instead of xmalloc where possible + maintenance: use calloc instead of malloc where possible - We can avoid having to call memset by calling xcalloc directly + We can avoid having to call memset by calling calloc directly Signed-off-by: Seija doremylover123@gmail.com builtin/pack-redundant.c | 6 ++---- remote.c | 4 ++-- submodule.c | 10 +++++----- xdiff/xutils.c | 4 +--- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/builtin/pack-redundant.c b/builtin/pack-redundant.c index ecd49ca268f..0e184bb5212 100644 --- a/builtin/pack-redundant.c +++ b/builtin/pack-redundant.c @@ -51,7 +51,7 @@ static inline struct llist_item *llist_item_get(void) new_item = free_nodes; free_nodes = free_nodes->next; } else { - int i = 1; + size_t i = 1; ALLOC_ARRAY(new_item, BLKSIZE); for (; i < BLKSIZE; i++) llist_item_put(&new_item[i]); @@ -61,9 +61,7 @@ static inline struct llist_item *llist_item_get(void) static inline void llist_init(struct llist **list) { - *list = xmalloc(sizeof(struct llist)); - (*list)->front = (*list)->back = NULL; - (*list)->size = 0; + CALLOC_ARRAY(*list, 1); } static struct llist * llist_copy(struct llist *list) diff --git a/remote.c b/remote.c index 60869beebe7..475a1d18af0 100644 --- a/remote.c +++ b/remote.c @@ -2741,9 +2741,9 @@ void apply_push_cas(struct push_cas_option *cas, struct remote_state *remote_state_new(void) { - struct remote_state *r = xmalloc(sizeof(*r)); + struct remote_state *r; - memset(r, 0, sizeof(*r)); + CALLOC_ARRAY(r, 1); hashmap_init(&r->remotes_hash, remotes_hash_cmp, NULL, 0); hashmap_init(&r->branches_hash, branches_hash_cmp, NULL, 0); diff --git a/submodule.c b/submodule.c index 8ac2fca855d..015102a83d6 100644 --- a/submodule.c +++ b/submodule.c @@ -1458,14 +1458,13 @@ struct fetch_task { */ static const struct submodule *get_non_gitmodules_submodule(const char *path) { - struct submodule *ret = NULL; + struct submodule *ret; const char *name = default_name_or_path(path); if (!name) return NULL; - ret = xmalloc(sizeof(*ret)); - memset(ret, 0, sizeof(*ret)); + CALLOC_ARRAY(ret, 1); ret->path = name; ret->name = name; @@ -1504,8 +1503,9 @@ static struct fetch_task *fetch_task_create(struct submodule_parallel_fetch *spf const char *path, const struct object_id *treeish_name) { - struct fetch_task *task = xmalloc(sizeof(*task)); - memset(task, 0, sizeof(*task)); + struct fetch_task *task; + + CALLOC_ARRAY(task, 1); task->sub = submodule_from_path(spf->r, treeish_name, path); diff --git a/xdiff/xutils.c b/xdiff/xutils.c index 9e36f24875d..c19bc441a96 100644 --- a/xdiff/xutils.c +++ b/xdiff/xutils.c @@ -98,12 +98,10 @@ void *xdl_cha_alloc(chastore_t *cha) { void *data; if (!(ancur = cha->ancur) || ancur->icurr == cha->nsize) { - if (!(ancur = (chanode_t *) xdl_malloc(sizeof(chanode_t) + cha->nsize))) { + if (!(ancur = (chanode_t *) xdl_calloc(1, sizeof(chanode_t) + cha->nsize))) { return NULL; } - ancur->icurr = 0; - ancur->next = NULL; if (cha->tail) cha->tail->next = ancur; if (!cha->head) base-commit: 805265fcf7a737664a8321aaf4a0587b78435184 -- gitgitgadget ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH v4] maintenance: use calloc instead of malloc where possible 2022-12-05 16:12 ` [PATCH v4] maintenance: use calloc instead of malloc " Rose via GitGitGadget @ 2022-12-06 5:03 ` Junio C Hamano 2022-12-06 17:38 ` [PATCH v5] revision: " Rose via GitGitGadget 1 sibling, 0 replies; 16+ messages in thread From: Junio C Hamano @ 2022-12-06 5:03 UTC (permalink / raw) To: Rose via GitGitGadget; +Cc: git, Jeff Hostetler, Seija "Rose via GitGitGadget" <gitgitgadget@gmail.com> writes: > From: Seija <doremylover123@gmail.com> > > We can avoid having to call memset by calling calloc directly What is not explained here is how that makes the code better in what way. Reduced line count? Reduced cycle count? Reduced line count? The reason I ask is because the patch touches codepaths that do not call memset() after malloc(), which the above may explain. Also, the patch does not use calloc() directly, but uses CALLOC_ARRAY() doesn't it? > + maintenance: use calloc instead of malloc where possible This is not about "git maintenance", is it? Why is that subsystem specifically named here? This is not about the patch, because Signed-off-by: line has a legal meaning (also see SubmittingPatches[[real-name]]), would you mind explaining what is going on with your name? The e-mailed patches come from "Rose", but the patch author identifies themselves as "Seija". > diff --git a/builtin/pack-redundant.c b/builtin/pack-redundant.c > index ecd49ca268f..0e184bb5212 100644 > --- a/builtin/pack-redundant.c > +++ b/builtin/pack-redundant.c > @@ -51,7 +51,7 @@ static inline struct llist_item *llist_item_get(void) > new_item = free_nodes; > free_nodes = free_nodes->next; > } else { > - int i = 1; > + size_t i = 1; > ALLOC_ARRAY(new_item, BLKSIZE); > for (; i < BLKSIZE; i++) > llist_item_put(&new_item[i]); This is unrelated change, isn't it? > @@ -61,9 +61,7 @@ static inline struct llist_item *llist_item_get(void) > > static inline void llist_init(struct llist **list) > { > - *list = xmalloc(sizeof(struct llist)); > - (*list)->front = (*list)->back = NULL; > - (*list)->size = 0; > + CALLOC_ARRAY(*list, 1); > } I am somewhat torn on this one. The original makes it crystal clear that the initial state of the llist data structure is that the .front and the .back pointers that point at the head and the tail of a linearly linked list point at NULL and the .size member indicates there is zero elements on the list. IOW, unlike a mindless "memset()" in a x = malloc(sizeof(...)); memset(x, '\0', sizeof(...)); sequence, the way members are cleared was meaningful in the original. Using CALLOC_ARRAY() makes it as bad as use of memset() that blindly fills the memory reason with NUL bytes. Surely a NULL pointer may have the same bit representation as a region of memory filled with NUL, and a size_t integer whose value is zero may also share the same bit representation, but it lost clarity of the original. On the other hand, if we are willing to accept the conciseness, and accept the "\0 filled memory region is the naturally initialized state for this structure" convention, then I do not see the value of having a separate llist_init() helper function. It is used only in a handful places in this single file, so getting rid of the helper and writing CALLOC_ARRAY(x, 1) to clear each instance of the structure it is used to clear may not be a bad thing. And the presented solution is neither. Again, I'd prefer to keep the original, but if we must use CALLOC_ARRAY() to replace it, then I'd prefer to see that the helper function to be removed. > diff --git a/remote.c b/remote.c > index 60869beebe7..475a1d18af0 100644 > --- a/remote.c > +++ b/remote.c > @@ -2741,9 +2741,9 @@ void apply_push_cas(struct push_cas_option *cas, > > struct remote_state *remote_state_new(void) > { > - struct remote_state *r = xmalloc(sizeof(*r)); > + struct remote_state *r; > > - memset(r, 0, sizeof(*r)); > + CALLOC_ARRAY(r, 1); This IS an improvement. We do the mindless clearing either way, it is just shorter and easier to follow. > diff --git a/submodule.c b/submodule.c > index 8ac2fca855d..015102a83d6 100644 > --- a/submodule.c > +++ b/submodule.c > @@ -1458,14 +1458,13 @@ struct fetch_task { > */ > static const struct submodule *get_non_gitmodules_submodule(const char *path) > { > - struct submodule *ret = NULL; > + struct submodule *ret; > const char *name = default_name_or_path(path); > > if (!name) > return NULL; > > - ret = xmalloc(sizeof(*ret)); > - memset(ret, 0, sizeof(*ret)); > + CALLOC_ARRAY(ret, 1); Ditto. > @@ -1504,8 +1503,9 @@ static struct fetch_task *fetch_task_create(struct submodule_parallel_fetch *spf > const char *path, > const struct object_id *treeish_name) > { > - struct fetch_task *task = xmalloc(sizeof(*task)); > - memset(task, 0, sizeof(*task)); > + struct fetch_task *task; > + > + CALLOC_ARRAY(task, 1); > > task->sub = submodule_from_path(spf->r, treeish_name, path); Ditto. > diff --git a/xdiff/xutils.c b/xdiff/xutils.c > index 9e36f24875d..c19bc441a96 100644 > --- a/xdiff/xutils.c > +++ b/xdiff/xutils.c > @@ -98,12 +98,10 @@ void *xdl_cha_alloc(chastore_t *cha) { > void *data; > > if (!(ancur = cha->ancur) || ancur->icurr == cha->nsize) { > - if (!(ancur = (chanode_t *) xdl_malloc(sizeof(chanode_t) + cha->nsize))) { > + if (!(ancur = (chanode_t *) xdl_calloc(1, sizeof(chanode_t) + cha->nsize))) { > > return NULL; > } > - ancur->icurr = 0; > - ancur->next = NULL; I am somewhat negative on this for the same reason why I'd prefer to keep the llist thing intact. Also xdiff code is a borrowed code and I'd rather see us not to touch it unnecessarily. > if (cha->tail) > cha->tail->next = ancur; > if (!cha->head) > > base-commit: 805265fcf7a737664a8321aaf4a0587b78435184 Thanks. ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v5] revision: use calloc instead of malloc where possible 2022-12-05 16:12 ` [PATCH v4] maintenance: use calloc instead of malloc " Rose via GitGitGadget 2022-12-06 5:03 ` Junio C Hamano @ 2022-12-06 17:38 ` Rose via GitGitGadget 2022-12-06 19:44 ` Ævar Arnfjörð Bjarmason 2022-12-06 19:53 ` [PATCH v6] " Rose via GitGitGadget 1 sibling, 2 replies; 16+ messages in thread From: Rose via GitGitGadget @ 2022-12-06 17:38 UTC (permalink / raw) To: git; +Cc: Jeff Hostetler, Rose, Seija From: Seija <doremylover123@gmail.com> We can avoid having to call memset by calling calloc directly Signed-off-by: Seija doremylover123@gmail.com --- revision: use calloc instead of malloc where possible We can avoid having to call memset by calling calloc directly Signed-off-by: Seija doremylover123@gmail.com Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1390%2FAtariDreams%2Fcalloc-v5 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1390/AtariDreams/calloc-v5 Pull-Request: https://github.com/git/git/pull/1390 Range-diff vs v4: 1: 3cd6b1eab13 ! 1: 8072fa30e4f maintenance: use calloc instead of malloc where possible @@ Metadata Author: Seija <doremylover123@gmail.com> ## Commit message ## - maintenance: use calloc instead of malloc where possible + revision: use calloc instead of malloc where possible We can avoid having to call memset by calling calloc directly @@ Commit message ## builtin/pack-redundant.c ## @@ builtin/pack-redundant.c: static inline struct llist_item *llist_item_get(void) - new_item = free_nodes; - free_nodes = free_nodes->next; - } else { -- int i = 1; -+ size_t i = 1; - ALLOC_ARRAY(new_item, BLKSIZE); - for (; i < BLKSIZE; i++) - llist_item_put(&new_item[i]); -@@ builtin/pack-redundant.c: static inline struct llist_item *llist_item_get(void) + return new_item; + } - static inline void llist_init(struct llist **list) - { +-static inline void llist_init(struct llist **list) +-{ - *list = xmalloc(sizeof(struct llist)); - (*list)->front = (*list)->back = NULL; - (*list)->size = 0; -+ CALLOC_ARRAY(*list, 1); - } - +-} +- static struct llist * llist_copy(struct llist *list) + { + struct llist *ret; + struct llist_item *new_item, *old_item, *prev; + +- llist_init(&ret); ++ CALLOC_ARRAY(ret, 1); + + if ((ret->size = list->size) == 0) + return ret; +@@ builtin/pack-redundant.c: static void load_all_objects(void) + struct pack_list *pl = local_packs; + struct llist_item *hint, *l; + +- llist_init(&all_objects); ++ CALLOC_ARRAY(all_objects, 1); + + while (pl) { + hint = NULL; +@@ builtin/pack-redundant.c: static void cmp_local_packs(void) + + /* only one packfile */ + if (!pl->next) { +- llist_init(&pl->unique_objects); ++ CALLOC_ARRAY(pl->unique_objects, 1); + return; + } + +@@ builtin/pack-redundant.c: static struct pack_list * add_pack(struct packed_git *p) + return NULL; + + l.pack = p; +- llist_init(&l.remaining_objects); ++ CALLOC_ARRAY(l.remaining_objects, 1); + + if (open_pack_index(p)) + return NULL; +@@ builtin/pack-redundant.c: int cmd_pack_redundant(int argc, const char **argv, const char *prefix) + scan_alt_odb_packs(); + + /* ignore objects given on stdin */ +- llist_init(&ignore); ++ CALLOC_ARRAY(ignore, 1); + if (!isatty(0)) { + while (fgets(buf, sizeof(buf), stdin)) { + oid = xmalloc(sizeof(*oid)); ## remote.c ## @@ remote.c: void apply_push_cas(struct push_cas_option *cas, @@ submodule.c: static struct fetch_task *fetch_task_create(struct submodule_parall task->sub = submodule_from_path(spf->r, treeish_name, path); - - ## xdiff/xutils.c ## -@@ xdiff/xutils.c: void *xdl_cha_alloc(chastore_t *cha) { - void *data; - - if (!(ancur = cha->ancur) || ancur->icurr == cha->nsize) { -- if (!(ancur = (chanode_t *) xdl_malloc(sizeof(chanode_t) + cha->nsize))) { -+ if (!(ancur = (chanode_t *) xdl_calloc(1, sizeof(chanode_t) + cha->nsize))) { - - return NULL; - } -- ancur->icurr = 0; -- ancur->next = NULL; - if (cha->tail) - cha->tail->next = ancur; - if (!cha->head) builtin/pack-redundant.c | 17 +++++------------ remote.c | 4 ++-- submodule.c | 10 +++++----- 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/builtin/pack-redundant.c b/builtin/pack-redundant.c index ecd49ca268f..ce5be807cf0 100644 --- a/builtin/pack-redundant.c +++ b/builtin/pack-redundant.c @@ -59,19 +59,12 @@ static inline struct llist_item *llist_item_get(void) return new_item; } -static inline void llist_init(struct llist **list) -{ - *list = xmalloc(sizeof(struct llist)); - (*list)->front = (*list)->back = NULL; - (*list)->size = 0; -} - static struct llist * llist_copy(struct llist *list) { struct llist *ret; struct llist_item *new_item, *old_item, *prev; - llist_init(&ret); + CALLOC_ARRAY(ret, 1); if ((ret->size = list->size) == 0) return ret; @@ -448,7 +441,7 @@ static void load_all_objects(void) struct pack_list *pl = local_packs; struct llist_item *hint, *l; - llist_init(&all_objects); + CALLOC_ARRAY(all_objects, 1); while (pl) { hint = NULL; @@ -475,7 +468,7 @@ static void cmp_local_packs(void) /* only one packfile */ if (!pl->next) { - llist_init(&pl->unique_objects); + CALLOC_ARRAY(pl->unique_objects, 1); return; } @@ -512,7 +505,7 @@ static struct pack_list * add_pack(struct packed_git *p) return NULL; l.pack = p; - llist_init(&l.remaining_objects); + CALLOC_ARRAY(l.remaining_objects, 1); if (open_pack_index(p)) return NULL; @@ -620,7 +613,7 @@ int cmd_pack_redundant(int argc, const char **argv, const char *prefix) scan_alt_odb_packs(); /* ignore objects given on stdin */ - llist_init(&ignore); + CALLOC_ARRAY(ignore, 1); if (!isatty(0)) { while (fgets(buf, sizeof(buf), stdin)) { oid = xmalloc(sizeof(*oid)); diff --git a/remote.c b/remote.c index 60869beebe7..475a1d18af0 100644 --- a/remote.c +++ b/remote.c @@ -2741,9 +2741,9 @@ void apply_push_cas(struct push_cas_option *cas, struct remote_state *remote_state_new(void) { - struct remote_state *r = xmalloc(sizeof(*r)); + struct remote_state *r; - memset(r, 0, sizeof(*r)); + CALLOC_ARRAY(r, 1); hashmap_init(&r->remotes_hash, remotes_hash_cmp, NULL, 0); hashmap_init(&r->branches_hash, branches_hash_cmp, NULL, 0); diff --git a/submodule.c b/submodule.c index 8ac2fca855d..015102a83d6 100644 --- a/submodule.c +++ b/submodule.c @@ -1458,14 +1458,13 @@ struct fetch_task { */ static const struct submodule *get_non_gitmodules_submodule(const char *path) { - struct submodule *ret = NULL; + struct submodule *ret; const char *name = default_name_or_path(path); if (!name) return NULL; - ret = xmalloc(sizeof(*ret)); - memset(ret, 0, sizeof(*ret)); + CALLOC_ARRAY(ret, 1); ret->path = name; ret->name = name; @@ -1504,8 +1503,9 @@ static struct fetch_task *fetch_task_create(struct submodule_parallel_fetch *spf const char *path, const struct object_id *treeish_name) { - struct fetch_task *task = xmalloc(sizeof(*task)); - memset(task, 0, sizeof(*task)); + struct fetch_task *task; + + CALLOC_ARRAY(task, 1); task->sub = submodule_from_path(spf->r, treeish_name, path); base-commit: 2e71cbbddd64695d43383c25c7a054ac4ff86882 -- gitgitgadget ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH v5] revision: use calloc instead of malloc where possible 2022-12-06 17:38 ` [PATCH v5] revision: " Rose via GitGitGadget @ 2022-12-06 19:44 ` Ævar Arnfjörð Bjarmason 2022-12-06 19:53 ` [PATCH v6] " Rose via GitGitGadget 1 sibling, 0 replies; 16+ messages in thread From: Ævar Arnfjörð Bjarmason @ 2022-12-06 19:44 UTC (permalink / raw) To: Rose via GitGitGadget; +Cc: git, Jeff Hostetler, Seija On Tue, Dec 06 2022, Rose via GitGitGadget wrote: > From: Seija <doremylover123@gmail.com> > > We can avoid having to call memset by calling calloc directly > > Signed-off-by: Seija doremylover123@gmail.com > --- > revision: use calloc instead of malloc where possible > > We can avoid having to call memset by calling calloc directly > > Signed-off-by: Seija doremylover123@gmail.com > > Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1390%2FAtariDreams%2Fcalloc-v5 > Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1390/AtariDreams/calloc-v5 > Pull-Request: https://github.com/git/git/pull/1390 > > Range-diff vs v4: > > 1: 3cd6b1eab13 ! 1: 8072fa30e4f maintenance: use calloc instead of malloc where possible > @@ Metadata > Author: Seija <doremylover123@gmail.com> > > ## Commit message ## > - maintenance: use calloc instead of malloc where possible > + revision: use calloc instead of malloc where possible > > We can avoid having to call memset by calling calloc directly > > @@ Commit message > > ## builtin/pack-redundant.c ## > @@ builtin/pack-redundant.c: static inline struct llist_item *llist_item_get(void) > - new_item = free_nodes; > - free_nodes = free_nodes->next; > - } else { > -- int i = 1; > -+ size_t i = 1; > - ALLOC_ARRAY(new_item, BLKSIZE); > - for (; i < BLKSIZE; i++) > - llist_item_put(&new_item[i]); > -@@ builtin/pack-redundant.c: static inline struct llist_item *llist_item_get(void) > + return new_item; > + } > > - static inline void llist_init(struct llist **list) > - { > +-static inline void llist_init(struct llist **list) > +-{ > - *list = xmalloc(sizeof(struct llist)); > - (*list)->front = (*list)->back = NULL; > - (*list)->size = 0; > -+ CALLOC_ARRAY(*list, 1); > - } > - > +-} > +- > static struct llist * llist_copy(struct llist *list) > + { > + struct llist *ret; > + struct llist_item *new_item, *old_item, *prev; > + > +- llist_init(&ret); > ++ CALLOC_ARRAY(ret, 1); > + > + if ((ret->size = list->size) == 0) > + return ret; > +@@ builtin/pack-redundant.c: static void load_all_objects(void) > + struct pack_list *pl = local_packs; > + struct llist_item *hint, *l; > + > +- llist_init(&all_objects); > ++ CALLOC_ARRAY(all_objects, 1); > + > + while (pl) { > + hint = NULL; > +@@ builtin/pack-redundant.c: static void cmp_local_packs(void) > + > + /* only one packfile */ > + if (!pl->next) { > +- llist_init(&pl->unique_objects); > ++ CALLOC_ARRAY(pl->unique_objects, 1); > + return; > + } > + > +@@ builtin/pack-redundant.c: static struct pack_list * add_pack(struct packed_git *p) > + return NULL; > + > + l.pack = p; > +- llist_init(&l.remaining_objects); > ++ CALLOC_ARRAY(l.remaining_objects, 1); > + > + if (open_pack_index(p)) > + return NULL; > +@@ builtin/pack-redundant.c: int cmd_pack_redundant(int argc, const char **argv, const char *prefix) > + scan_alt_odb_packs(); > + > + /* ignore objects given on stdin */ > +- llist_init(&ignore); > ++ CALLOC_ARRAY(ignore, 1); > + if (!isatty(0)) { > + while (fgets(buf, sizeof(buf), stdin)) { > + oid = xmalloc(sizeof(*oid)); > > ## remote.c ## > @@ remote.c: void apply_push_cas(struct push_cas_option *cas, > @@ submodule.c: static struct fetch_task *fetch_task_create(struct submodule_parall > > task->sub = submodule_from_path(spf->r, treeish_name, path); > > - > - ## xdiff/xutils.c ## > -@@ xdiff/xutils.c: void *xdl_cha_alloc(chastore_t *cha) { > - void *data; > - > - if (!(ancur = cha->ancur) || ancur->icurr == cha->nsize) { > -- if (!(ancur = (chanode_t *) xdl_malloc(sizeof(chanode_t) + cha->nsize))) { > -+ if (!(ancur = (chanode_t *) xdl_calloc(1, sizeof(chanode_t) + cha->nsize))) { > - > - return NULL; > - } > -- ancur->icurr = 0; > -- ancur->next = NULL; > - if (cha->tail) > - cha->tail->next = ancur; > - if (!cha->head) > > > builtin/pack-redundant.c | 17 +++++------------ > remote.c | 4 ++-- > submodule.c | 10 +++++----- > 3 files changed, 12 insertions(+), 19 deletions(-) > > diff --git a/builtin/pack-redundant.c b/builtin/pack-redundant.c > index ecd49ca268f..ce5be807cf0 100644 > --- a/builtin/pack-redundant.c > +++ b/builtin/pack-redundant.c > @@ -59,19 +59,12 @@ static inline struct llist_item *llist_item_get(void) > return new_item; > } > > -static inline void llist_init(struct llist **list) > -{ > - *list = xmalloc(sizeof(struct llist)); > - (*list)->front = (*list)->back = NULL; > - (*list)->size = 0; > -} > - > static struct llist * llist_copy(struct llist *list) > { > struct llist *ret; > struct llist_item *new_item, *old_item, *prev; > > - llist_init(&ret); > + CALLOC_ARRAY(ret, 1); > > if ((ret->size = list->size) == 0) > return ret; > @@ -448,7 +441,7 @@ static void load_all_objects(void) > struct pack_list *pl = local_packs; > struct llist_item *hint, *l; > > - llist_init(&all_objects); > + CALLOC_ARRAY(all_objects, 1); > > while (pl) { > hint = NULL; > @@ -475,7 +468,7 @@ static void cmp_local_packs(void) > > /* only one packfile */ > if (!pl->next) { > - llist_init(&pl->unique_objects); > + CALLOC_ARRAY(pl->unique_objects, 1); > return; > } > > @@ -512,7 +505,7 @@ static struct pack_list * add_pack(struct packed_git *p) > return NULL; > > l.pack = p; > - llist_init(&l.remaining_objects); > + CALLOC_ARRAY(l.remaining_objects, 1); > > if (open_pack_index(p)) > return NULL; > @@ -620,7 +613,7 @@ int cmd_pack_redundant(int argc, const char **argv, const char *prefix) > scan_alt_odb_packs(); > > /* ignore objects given on stdin */ > - llist_init(&ignore); > + CALLOC_ARRAY(ignore, 1); > if (!isatty(0)) { > while (fgets(buf, sizeof(buf), stdin)) { > oid = xmalloc(sizeof(*oid)); > diff --git a/remote.c b/remote.c > index 60869beebe7..475a1d18af0 100644 > --- a/remote.c > +++ b/remote.c > @@ -2741,9 +2741,9 @@ void apply_push_cas(struct push_cas_option *cas, > > struct remote_state *remote_state_new(void) > { > - struct remote_state *r = xmalloc(sizeof(*r)); > + struct remote_state *r; > > - memset(r, 0, sizeof(*r)); > + CALLOC_ARRAY(r, 1); > > hashmap_init(&r->remotes_hash, remotes_hash_cmp, NULL, 0); > hashmap_init(&r->branches_hash, branches_hash_cmp, NULL, 0); > diff --git a/submodule.c b/submodule.c > index 8ac2fca855d..015102a83d6 100644 > --- a/submodule.c > +++ b/submodule.c > @@ -1458,14 +1458,13 @@ struct fetch_task { > */ > static const struct submodule *get_non_gitmodules_submodule(const char *path) > { > - struct submodule *ret = NULL; > + struct submodule *ret; > const char *name = default_name_or_path(path); > > if (!name) > return NULL; > > - ret = xmalloc(sizeof(*ret)); > - memset(ret, 0, sizeof(*ret)); > + CALLOC_ARRAY(ret, 1); > ret->path = name; > ret->name = name; > > @@ -1504,8 +1503,9 @@ static struct fetch_task *fetch_task_create(struct submodule_parallel_fetch *spf > const char *path, > const struct object_id *treeish_name) > { > - struct fetch_task *task = xmalloc(sizeof(*task)); > - memset(task, 0, sizeof(*task)); > + struct fetch_task *task; > + > + CALLOC_ARRAY(task, 1); > > task->sub = submodule_from_path(spf->r, treeish_name, path); > > > base-commit: 2e71cbbddd64695d43383c25c7a054ac4ff86882 This is partially some of the sentiments Junio did in the v4 review (although I looked at this before reading that). I think calloc-ing or memset-ing a struct is going in the opposite direction of where we've been trending, which is to have explicit initializers. Sometimes it's justified, but in the "pack-redundant.c" case I think it's probably better & more future-proof to keep it, and get rid of the odd patter nof passing in a ** to an init function to have it alloc for us. I.e. this (there's some stray new free() in there from testing, sorry, but those are also bugs we should fix...): diff --git a/builtin/pack-redundant.c b/builtin/pack-redundant.c index ecd49ca268f..af91d643dd2 100644 --- a/builtin/pack-redundant.c +++ b/builtin/pack-redundant.c @@ -27,6 +27,7 @@ static struct llist { struct llist_item *back; size_t size; } *all_objects; /* all objects which must be present in local packfiles */ +#define LLIST_INIT { 0 } static struct pack_list { struct pack_list *next; @@ -59,19 +60,18 @@ static inline struct llist_item *llist_item_get(void) return new_item; } -static inline void llist_init(struct llist **list) +static inline void llist_init(struct llist *list) { - *list = xmalloc(sizeof(struct llist)); - (*list)->front = (*list)->back = NULL; - (*list)->size = 0; + struct llist blank = LLIST_INIT; + memcpy(list, &blank, sizeof(*list)); } static struct llist * llist_copy(struct llist *list) { - struct llist *ret; + struct llist *ret = xmalloc(sizeof(struct llist)); struct llist_item *new_item, *old_item, *prev; - llist_init(&ret); + llist_init(ret); if ((ret->size = list->size) == 0) return ret; @@ -420,6 +420,7 @@ static void minimize(struct pack_list **min) unique_pack_objects = llist_copy(all_objects); llist_sorted_difference_inplace(unique_pack_objects, missing); + free(missing); /* remove unique pack objects from the non_unique packs */ pl = non_unique; @@ -447,8 +448,9 @@ static void load_all_objects(void) { struct pack_list *pl = local_packs; struct llist_item *hint, *l; + all_objects = xmalloc(sizeof(struct llist)); - llist_init(&all_objects); + llist_init(all_objects); while (pl) { hint = NULL; @@ -475,7 +477,8 @@ static void cmp_local_packs(void) /* only one packfile */ if (!pl->next) { - llist_init(&pl->unique_objects); + pl->unique_objects = xmalloc(sizeof(struct llist)); + llist_init(pl->unique_objects); return; } @@ -512,7 +515,8 @@ static struct pack_list * add_pack(struct packed_git *p) return NULL; l.pack = p; - llist_init(&l.remaining_objects); + l.remaining_objects = xmalloc(sizeof(struct llist)); + llist_init(l.remaining_objects); if (open_pack_index(p)) return NULL; @@ -562,7 +566,7 @@ int cmd_pack_redundant(int argc, const char **argv, const char *prefix) int i; int i_still_use_this = 0; struct pack_list *min = NULL, *red, *pl; - struct llist *ignore; + struct llist *ignore = xmalloc(sizeof(struct llist)); struct object_id *oid; char buf[GIT_MAX_HEXSZ + 2]; /* hex hash + \n + \0 */ @@ -620,7 +624,7 @@ int cmd_pack_redundant(int argc, const char **argv, const char *prefix) scan_alt_odb_packs(); /* ignore objects given on stdin */ - llist_init(&ignore); + llist_init(ignore); if (!isatty(0)) { while (fgets(buf, sizeof(buf), stdin)) { oid = xmalloc(sizeof(*oid)); @@ -635,6 +639,7 @@ int cmd_pack_redundant(int argc, const char **argv, const char *prefix) llist_sorted_difference_inplace(pl->remaining_objects, ignore); pl = pl->next; } + free(ignore); cmp_local_packs(); Now, for: > @@ -1504,8 +1503,9 @@ static struct fetch_task *fetch_task_create(struct submodule_parallel_fetch *spf > const char *path, > const struct object_id *treeish_name) > { > - struct fetch_task *task = xmalloc(sizeof(*task)); > - memset(task, 0, sizeof(*task)); > + struct fetch_task *task; > + > + CALLOC_ARRAY(task, 1); > > task->sub = submodule_from_path(spf->r, treeish_name, path); This is no worse than before, but I think we're just converting here from one bad pattern to another. The "struct fetch_task" contains a "struct strvec", for many of our structs we play it fast and loose with whether you can calloc() it, but for "struct strbuf", "struct strvec" etc. we have an "empty_strvec" (or "slopbuf" etc.), so we *really* want those to be properly init'd. AFAICT we're just lucky that it happens to work with the strvec API in this case, but if this was a strbuf it could easily segfault etc. So the better fix here since we're spending review time on it isn't to move from one memset() equivalent pattern to another, but actually to start properly initializing this. Finally, this commit just seems to be all over the place in what it's changing. We have a bunch of: x = xmalloc(...); memset(x, 0, ...); In our tree, it's not clear why these are being picked out in particular, or what they have to do with each other. I think that if we're proposing to refactor these doing so with coccinelle is a much better thing to do. There's a parallel thread about that over at: https://lore.kernel.org/git/6694c52b38674859eb0390c7f62da1209a8d8ec3.1670266373.git.me@ttaylorr.com/ ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v6] revision: use calloc instead of malloc where possible 2022-12-06 17:38 ` [PATCH v5] revision: " Rose via GitGitGadget 2022-12-06 19:44 ` Ævar Arnfjörð Bjarmason @ 2022-12-06 19:53 ` Rose via GitGitGadget 2022-12-07 8:44 ` Bagas Sanjaya 2024-12-18 0:30 ` [PATCH v7] " AreaZR via GitGitGadget 1 sibling, 2 replies; 16+ messages in thread From: Rose via GitGitGadget @ 2022-12-06 19:53 UTC (permalink / raw) To: git; +Cc: Jeff Hostetler, Rose, Seija From: Seija <doremylover123@gmail.com> We can avoid having to call memset by calling calloc Signed-off-by: Seija doremylover123@gmail.com --- revision: use calloc instead of malloc where possible We can avoid having to call memset by calling calloc Signed-off-by: Seija doremylover123@gmail.com Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1390%2FAtariDreams%2Fcalloc-v6 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1390/AtariDreams/calloc-v6 Pull-Request: https://github.com/git/git/pull/1390 Range-diff vs v5: 1: 8072fa30e4f ! 1: e012cf5c158 revision: use calloc instead of malloc where possible @@ Metadata ## Commit message ## revision: use calloc instead of malloc where possible - We can avoid having to call memset by calling calloc directly + We can avoid having to call memset by calling calloc Signed-off-by: Seija doremylover123@gmail.com builtin/pack-redundant.c | 17 +++++------------ remote.c | 4 ++-- submodule.c | 10 +++++----- 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/builtin/pack-redundant.c b/builtin/pack-redundant.c index ecd49ca268f..ce5be807cf0 100644 --- a/builtin/pack-redundant.c +++ b/builtin/pack-redundant.c @@ -59,19 +59,12 @@ static inline struct llist_item *llist_item_get(void) return new_item; } -static inline void llist_init(struct llist **list) -{ - *list = xmalloc(sizeof(struct llist)); - (*list)->front = (*list)->back = NULL; - (*list)->size = 0; -} - static struct llist * llist_copy(struct llist *list) { struct llist *ret; struct llist_item *new_item, *old_item, *prev; - llist_init(&ret); + CALLOC_ARRAY(ret, 1); if ((ret->size = list->size) == 0) return ret; @@ -448,7 +441,7 @@ static void load_all_objects(void) struct pack_list *pl = local_packs; struct llist_item *hint, *l; - llist_init(&all_objects); + CALLOC_ARRAY(all_objects, 1); while (pl) { hint = NULL; @@ -475,7 +468,7 @@ static void cmp_local_packs(void) /* only one packfile */ if (!pl->next) { - llist_init(&pl->unique_objects); + CALLOC_ARRAY(pl->unique_objects, 1); return; } @@ -512,7 +505,7 @@ static struct pack_list * add_pack(struct packed_git *p) return NULL; l.pack = p; - llist_init(&l.remaining_objects); + CALLOC_ARRAY(l.remaining_objects, 1); if (open_pack_index(p)) return NULL; @@ -620,7 +613,7 @@ int cmd_pack_redundant(int argc, const char **argv, const char *prefix) scan_alt_odb_packs(); /* ignore objects given on stdin */ - llist_init(&ignore); + CALLOC_ARRAY(ignore, 1); if (!isatty(0)) { while (fgets(buf, sizeof(buf), stdin)) { oid = xmalloc(sizeof(*oid)); diff --git a/remote.c b/remote.c index 60869beebe7..475a1d18af0 100644 --- a/remote.c +++ b/remote.c @@ -2741,9 +2741,9 @@ void apply_push_cas(struct push_cas_option *cas, struct remote_state *remote_state_new(void) { - struct remote_state *r = xmalloc(sizeof(*r)); + struct remote_state *r; - memset(r, 0, sizeof(*r)); + CALLOC_ARRAY(r, 1); hashmap_init(&r->remotes_hash, remotes_hash_cmp, NULL, 0); hashmap_init(&r->branches_hash, branches_hash_cmp, NULL, 0); diff --git a/submodule.c b/submodule.c index 8ac2fca855d..015102a83d6 100644 --- a/submodule.c +++ b/submodule.c @@ -1458,14 +1458,13 @@ struct fetch_task { */ static const struct submodule *get_non_gitmodules_submodule(const char *path) { - struct submodule *ret = NULL; + struct submodule *ret; const char *name = default_name_or_path(path); if (!name) return NULL; - ret = xmalloc(sizeof(*ret)); - memset(ret, 0, sizeof(*ret)); + CALLOC_ARRAY(ret, 1); ret->path = name; ret->name = name; @@ -1504,8 +1503,9 @@ static struct fetch_task *fetch_task_create(struct submodule_parallel_fetch *spf const char *path, const struct object_id *treeish_name) { - struct fetch_task *task = xmalloc(sizeof(*task)); - memset(task, 0, sizeof(*task)); + struct fetch_task *task; + + CALLOC_ARRAY(task, 1); task->sub = submodule_from_path(spf->r, treeish_name, path); base-commit: 2e71cbbddd64695d43383c25c7a054ac4ff86882 -- gitgitgadget ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH v6] revision: use calloc instead of malloc where possible 2022-12-06 19:53 ` [PATCH v6] " Rose via GitGitGadget @ 2022-12-07 8:44 ` Bagas Sanjaya 2024-12-18 0:30 ` [PATCH v7] " AreaZR via GitGitGadget 1 sibling, 0 replies; 16+ messages in thread From: Bagas Sanjaya @ 2022-12-07 8:44 UTC (permalink / raw) To: Rose via GitGitGadget; +Cc: git, Jeff Hostetler, Rose, Seija [-- Attachment #1: Type: text/plain, Size: 838 bytes --] On Tue, Dec 06, 2022 at 07:53:14PM +0000, Rose via GitGitGadget wrote: > From: Seija <doremylover123@gmail.com> > > We can avoid having to call memset by calling calloc Who are "we"? Please avoid using first-person pronouns (I and we), since these are ambiguous in context of many entities (individuals/companies) participating in development. Instead, write in imperative mood and passive voice, e.g. "Avoid the need to call memset by allocating with calloc() instead of malloc().". Even then, what are justifications of malloc() -> calloc() conversion other than the described above? > > Signed-off-by: Seija doremylover123@gmail.com The SoB doesn't look OK. It should have been "Signed-off-by: Your Real Name <yourname@what.domain>". Thanks. -- An old man doll... just what I always wanted! - Clara [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 228 bytes --] ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v7] revision: use calloc instead of malloc where possible 2022-12-06 19:53 ` [PATCH v6] " Rose via GitGitGadget 2022-12-07 8:44 ` Bagas Sanjaya @ 2024-12-18 0:30 ` AreaZR via GitGitGadget 2024-12-18 0:48 ` [PATCH v8] git: " AreaZR via GitGitGadget 1 sibling, 1 reply; 16+ messages in thread From: AreaZR via GitGitGadget @ 2024-12-18 0:30 UTC (permalink / raw) To: git Cc: Jeff Hostetler [ ], Ævar Arnfjörð Bjarmason [ ], Bagas Sanjaya [ ], AreaZR, Seija Kijin From: Seija Kijin <doremylover123@gmail.com> We can avoid having to call memset by calling calloc Signed-off-by: Seija <doremylover123@gmail.com> --- revision: use calloc instead of malloc where possible We can avoid having to call memset by calling calloc Signed-off-by: Seija doremylover123@gmail.com Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1390%2FAreaZR%2Fcalloc-v7 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1390/AreaZR/calloc-v7 Pull-Request: https://github.com/git/git/pull/1390 Range-diff vs v6: 1: e012cf5c158 ! 1: e91cea8dea8 revision: use calloc instead of malloc where possible @@ ## Metadata ## -Author: Seija <doremylover123@gmail.com> +Author: Seija Kijin <doremylover123@gmail.com> ## Commit message ## revision: use calloc instead of malloc where possible We can avoid having to call memset by calling calloc - Signed-off-by: Seija doremylover123@gmail.com + Signed-off-by: Seija <doremylover123@gmail.com> ## builtin/pack-redundant.c ## @@ builtin/pack-redundant.c: static inline struct llist_item *llist_item_get(void) @@ builtin/pack-redundant.c: static inline struct llist_item *llist_item_get(void) - (*list)->size = 0; -} - - static struct llist * llist_copy(struct llist *list) + static void llist_free(struct llist *list) { + for (struct llist_item *i = list->front, *next; i; i = next) { +@@ builtin/pack-redundant.c: static struct llist * llist_copy(struct llist *list) struct llist *ret; struct llist_item *new_item, *old_item, *prev; @@ builtin/pack-redundant.c: static struct pack_list * add_pack(struct packed_git * if (open_pack_index(p)) return NULL; -@@ builtin/pack-redundant.c: int cmd_pack_redundant(int argc, const char **argv, const char *prefix) +@@ builtin/pack-redundant.c: int cmd_pack_redundant(int argc, const char **argv, const char *prefix UNUSED, s scan_alt_odb_packs(); /* ignore objects given on stdin */ - llist_init(&ignore); + CALLOC_ARRAY(ignore, 1); if (!isatty(0)) { + struct object_id oid; while (fgets(buf, sizeof(buf), stdin)) { - oid = xmalloc(sizeof(*oid)); ## remote.c ## @@ remote.c: void apply_push_cas(struct push_cas_option *cas, @@ submodule.c: static struct fetch_task *fetch_task_create(struct submodule_parall + + CALLOC_ARRAY(task, 1); - task->sub = submodule_from_path(spf->r, treeish_name, path); - + if (validate_submodule_path(path) < 0) + exit(128); builtin/pack-redundant.c | 17 +++++------------ remote.c | 4 ++-- submodule.c | 10 +++++----- 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/builtin/pack-redundant.c b/builtin/pack-redundant.c index bc61990a933..7015a85bf78 100644 --- a/builtin/pack-redundant.c +++ b/builtin/pack-redundant.c @@ -63,13 +63,6 @@ static inline struct llist_item *llist_item_get(void) return new_item; } -static inline void llist_init(struct llist **list) -{ - *list = xmalloc(sizeof(struct llist)); - (*list)->front = (*list)->back = NULL; - (*list)->size = 0; -} - static void llist_free(struct llist *list) { for (struct llist_item *i = list->front, *next; i; i = next) { @@ -84,7 +77,7 @@ static struct llist * llist_copy(struct llist *list) struct llist *ret; struct llist_item *new_item, *old_item, *prev; - llist_init(&ret); + CALLOC_ARRAY(ret, 1); if ((ret->size = list->size) == 0) return ret; @@ -480,7 +473,7 @@ static void load_all_objects(void) struct pack_list *pl = local_packs; struct llist_item *hint, *l; - llist_init(&all_objects); + CALLOC_ARRAY(all_objects, 1); while (pl) { hint = NULL; @@ -507,7 +500,7 @@ static void cmp_local_packs(void) /* only one packfile */ if (!pl->next) { - llist_init(&pl->unique_objects); + CALLOC_ARRAY(pl->unique_objects, 1); return; } @@ -544,7 +537,7 @@ static struct pack_list * add_pack(struct packed_git *p) return NULL; l.pack = p; - llist_init(&l.remaining_objects); + CALLOC_ARRAY(l.remaining_objects, 1); if (open_pack_index(p)) return NULL; @@ -650,7 +643,7 @@ int cmd_pack_redundant(int argc, const char **argv, const char *prefix UNUSED, s scan_alt_odb_packs(); /* ignore objects given on stdin */ - llist_init(&ignore); + CALLOC_ARRAY(ignore, 1); if (!isatty(0)) { struct object_id oid; while (fgets(buf, sizeof(buf), stdin)) { diff --git a/remote.c b/remote.c index 10104d11e3c..462ff105273 100644 --- a/remote.c +++ b/remote.c @@ -2854,9 +2854,9 @@ void apply_push_cas(struct push_cas_option *cas, struct remote_state *remote_state_new(void) { - struct remote_state *r = xmalloc(sizeof(*r)); + struct remote_state *r; - memset(r, 0, sizeof(*r)); + CALLOC_ARRAY(r, 1); hashmap_init(&r->remotes_hash, remotes_hash_cmp, NULL, 0); hashmap_init(&r->branches_hash, branches_hash_cmp, NULL, 0); diff --git a/submodule.c b/submodule.c index 7ec564854d0..7707c6f48f0 100644 --- a/submodule.c +++ b/submodule.c @@ -1489,14 +1489,13 @@ struct fetch_task { */ static const struct submodule *get_non_gitmodules_submodule(const char *path) { - struct submodule *ret = NULL; + struct submodule *ret; const char *name = default_name_or_path(path); if (!name) return NULL; - ret = xmalloc(sizeof(*ret)); - memset(ret, 0, sizeof(*ret)); + CALLOC_ARRAY(ret, 1); ret->path = name; ret->name = name; @@ -1536,8 +1535,9 @@ static struct fetch_task *fetch_task_create(struct submodule_parallel_fetch *spf const char *path, const struct object_id *treeish_name) { - struct fetch_task *task = xmalloc(sizeof(*task)); - memset(task, 0, sizeof(*task)); + struct fetch_task *task; + + CALLOC_ARRAY(task, 1); if (validate_submodule_path(path) < 0) exit(128); base-commit: 2ccc89b0c16c51561da90d21cfbb4b58cc877bf6 -- gitgitgadget ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v8] git: use calloc instead of malloc where possible 2024-12-18 0:30 ` [PATCH v7] " AreaZR via GitGitGadget @ 2024-12-18 0:48 ` AreaZR via GitGitGadget 2024-12-18 0:58 ` [PATCH v9] " AreaZR via GitGitGadget 0 siblings, 1 reply; 16+ messages in thread From: AreaZR via GitGitGadget @ 2024-12-18 0:48 UTC (permalink / raw) To: git Cc: Jeff Hostetler [ ], Ævar Arnfjörð Bjarmason [ ], Bagas Sanjaya [ ], AreaZR, Seija Kijin From: Seija Kijin <doremylover123@gmail.com> We can avoid having to call memset by calling calloc. Signed-off-by: Seija <doremylover123@gmail.com> --- git: use calloc instead of malloc where possible We can avoid having to call memset by calling calloc Signed-off-by: Seija doremylover123@gmail.com Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1390%2FAreaZR%2Fcalloc-v8 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1390/AreaZR/calloc-v8 Pull-Request: https://github.com/git/git/pull/1390 Range-diff vs v7: 1: e91cea8dea8 ! 1: b78f068b3a3 revision: use calloc instead of malloc where possible @@ Metadata Author: Seija Kijin <doremylover123@gmail.com> ## Commit message ## - revision: use calloc instead of malloc where possible + git: use calloc instead of malloc where possible - We can avoid having to call memset by calling calloc + We can avoid having to call memset by calling calloc. Signed-off-by: Seija <doremylover123@gmail.com> - ## builtin/pack-redundant.c ## -@@ builtin/pack-redundant.c: static inline struct llist_item *llist_item_get(void) - return new_item; - } - --static inline void llist_init(struct llist **list) --{ -- *list = xmalloc(sizeof(struct llist)); -- (*list)->front = (*list)->back = NULL; -- (*list)->size = 0; --} -- - static void llist_free(struct llist *list) - { - for (struct llist_item *i = list->front, *next; i; i = next) { -@@ builtin/pack-redundant.c: static struct llist * llist_copy(struct llist *list) - struct llist *ret; - struct llist_item *new_item, *old_item, *prev; - -- llist_init(&ret); -+ CALLOC_ARRAY(ret, 1); - - if ((ret->size = list->size) == 0) - return ret; -@@ builtin/pack-redundant.c: static void load_all_objects(void) - struct pack_list *pl = local_packs; - struct llist_item *hint, *l; - -- llist_init(&all_objects); -+ CALLOC_ARRAY(all_objects, 1); - - while (pl) { - hint = NULL; -@@ builtin/pack-redundant.c: static void cmp_local_packs(void) - - /* only one packfile */ - if (!pl->next) { -- llist_init(&pl->unique_objects); -+ CALLOC_ARRAY(pl->unique_objects, 1); - return; - } - -@@ builtin/pack-redundant.c: static struct pack_list * add_pack(struct packed_git *p) - return NULL; - - l.pack = p; -- llist_init(&l.remaining_objects); -+ CALLOC_ARRAY(l.remaining_objects, 1); - - if (open_pack_index(p)) - return NULL; -@@ builtin/pack-redundant.c: int cmd_pack_redundant(int argc, const char **argv, const char *prefix UNUSED, s - scan_alt_odb_packs(); - - /* ignore objects given on stdin */ -- llist_init(&ignore); -+ CALLOC_ARRAY(ignore, 1); - if (!isatty(0)) { - struct object_id oid; - while (fgets(buf, sizeof(buf), stdin)) { - ## remote.c ## @@ remote.c: void apply_push_cas(struct push_cas_option *cas, remote.c | 4 ++-- submodule.c | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/remote.c b/remote.c index 10104d11e3c..462ff105273 100644 --- a/remote.c +++ b/remote.c @@ -2854,9 +2854,9 @@ void apply_push_cas(struct push_cas_option *cas, struct remote_state *remote_state_new(void) { - struct remote_state *r = xmalloc(sizeof(*r)); + struct remote_state *r; - memset(r, 0, sizeof(*r)); + CALLOC_ARRAY(r, 1); hashmap_init(&r->remotes_hash, remotes_hash_cmp, NULL, 0); hashmap_init(&r->branches_hash, branches_hash_cmp, NULL, 0); diff --git a/submodule.c b/submodule.c index 7ec564854d0..7707c6f48f0 100644 --- a/submodule.c +++ b/submodule.c @@ -1489,14 +1489,13 @@ struct fetch_task { */ static const struct submodule *get_non_gitmodules_submodule(const char *path) { - struct submodule *ret = NULL; + struct submodule *ret; const char *name = default_name_or_path(path); if (!name) return NULL; - ret = xmalloc(sizeof(*ret)); - memset(ret, 0, sizeof(*ret)); + CALLOC_ARRAY(ret, 1); ret->path = name; ret->name = name; @@ -1536,8 +1535,9 @@ static struct fetch_task *fetch_task_create(struct submodule_parallel_fetch *spf const char *path, const struct object_id *treeish_name) { - struct fetch_task *task = xmalloc(sizeof(*task)); - memset(task, 0, sizeof(*task)); + struct fetch_task *task; + + CALLOC_ARRAY(task, 1); if (validate_submodule_path(path) < 0) exit(128); base-commit: 063bcebf0c917140ca0e705cbe0fdea127e90086 -- gitgitgadget ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v9] git: use calloc instead of malloc where possible 2024-12-18 0:48 ` [PATCH v8] git: " AreaZR via GitGitGadget @ 2024-12-18 0:58 ` AreaZR via GitGitGadget 2024-12-18 1:26 ` [PATCH v10] git: use calloc instead of malloc + memset " AreaZR via GitGitGadget 0 siblings, 1 reply; 16+ messages in thread From: AreaZR via GitGitGadget @ 2024-12-18 0:58 UTC (permalink / raw) To: git Cc: Jeff Hostetler [ ], Ævar Arnfjörð Bjarmason [ ], Bagas Sanjaya [ ], AreaZR, Seija Kijin From: Seija Kijin <doremylover123@gmail.com> Avoid having to calling malloc+memset by calling calloc. Signed-off-by: Seija <doremylover123@gmail.com> --- git: use calloc instead of malloc where possible We can avoid having to call memset by calling calloc Signed-off-by: Seija doremylover123@gmail.com Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1390%2FAreaZR%2Fcalloc-v9 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1390/AreaZR/calloc-v9 Pull-Request: https://github.com/git/git/pull/1390 Range-diff vs v8: 1: b78f068b3a3 ! 1: 35994dfb8af git: use calloc instead of malloc where possible @@ Metadata ## Commit message ## git: use calloc instead of malloc where possible - We can avoid having to call memset by calling calloc. + Avoid having to calling malloc+memset by calling calloc. Signed-off-by: Seija <doremylover123@gmail.com> remote.c | 4 ++-- submodule.c | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/remote.c b/remote.c index 10104d11e3c..462ff105273 100644 --- a/remote.c +++ b/remote.c @@ -2854,9 +2854,9 @@ void apply_push_cas(struct push_cas_option *cas, struct remote_state *remote_state_new(void) { - struct remote_state *r = xmalloc(sizeof(*r)); + struct remote_state *r; - memset(r, 0, sizeof(*r)); + CALLOC_ARRAY(r, 1); hashmap_init(&r->remotes_hash, remotes_hash_cmp, NULL, 0); hashmap_init(&r->branches_hash, branches_hash_cmp, NULL, 0); diff --git a/submodule.c b/submodule.c index 7ec564854d0..7707c6f48f0 100644 --- a/submodule.c +++ b/submodule.c @@ -1489,14 +1489,13 @@ struct fetch_task { */ static const struct submodule *get_non_gitmodules_submodule(const char *path) { - struct submodule *ret = NULL; + struct submodule *ret; const char *name = default_name_or_path(path); if (!name) return NULL; - ret = xmalloc(sizeof(*ret)); - memset(ret, 0, sizeof(*ret)); + CALLOC_ARRAY(ret, 1); ret->path = name; ret->name = name; @@ -1536,8 +1535,9 @@ static struct fetch_task *fetch_task_create(struct submodule_parallel_fetch *spf const char *path, const struct object_id *treeish_name) { - struct fetch_task *task = xmalloc(sizeof(*task)); - memset(task, 0, sizeof(*task)); + struct fetch_task *task; + + CALLOC_ARRAY(task, 1); if (validate_submodule_path(path) < 0) exit(128); base-commit: 063bcebf0c917140ca0e705cbe0fdea127e90086 -- gitgitgadget ^ permalink raw reply related [flat|nested] 16+ messages in thread
* [PATCH v10] git: use calloc instead of malloc + memset where possible 2024-12-18 0:58 ` [PATCH v9] " AreaZR via GitGitGadget @ 2024-12-18 1:26 ` AreaZR via GitGitGadget 2024-12-18 15:39 ` Junio C Hamano 2024-12-18 16:48 ` [PATCH v11] " AreaZR via GitGitGadget 0 siblings, 2 replies; 16+ messages in thread From: AreaZR via GitGitGadget @ 2024-12-18 1:26 UTC (permalink / raw) To: git Cc: Jeff Hostetler [ ], Ævar Arnfjörð Bjarmason [ ], Bagas Sanjaya [ ], AreaZR, Seija Kijin From: Seija Kijin <doremylover123@gmail.com> Avoid calling malloc + memset by calling calloc. Signed-off-by: Seija <doremylover123@gmail.com> --- git: use calloc instead of malloc where possible We can avoid having to call memset by calling calloc Signed-off-by: Seija doremylover123@gmail.com Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1390%2FAreaZR%2Fcalloc-v10 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1390/AreaZR/calloc-v10 Pull-Request: https://github.com/git/git/pull/1390 Range-diff vs v9: 1: 35994dfb8af ! 1: d7b7959be0a git: use calloc instead of malloc where possible @@ Metadata Author: Seija Kijin <doremylover123@gmail.com> ## Commit message ## - git: use calloc instead of malloc where possible + git: use calloc instead of malloc + memset where possible - Avoid having to calling malloc+memset by calling calloc. + Avoid calling malloc + memset by calling calloc. Signed-off-by: Seija <doremylover123@gmail.com> remote.c | 4 ++-- submodule.c | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/remote.c b/remote.c index 10104d11e3c..462ff105273 100644 --- a/remote.c +++ b/remote.c @@ -2854,9 +2854,9 @@ void apply_push_cas(struct push_cas_option *cas, struct remote_state *remote_state_new(void) { - struct remote_state *r = xmalloc(sizeof(*r)); + struct remote_state *r; - memset(r, 0, sizeof(*r)); + CALLOC_ARRAY(r, 1); hashmap_init(&r->remotes_hash, remotes_hash_cmp, NULL, 0); hashmap_init(&r->branches_hash, branches_hash_cmp, NULL, 0); diff --git a/submodule.c b/submodule.c index 7ec564854d0..7707c6f48f0 100644 --- a/submodule.c +++ b/submodule.c @@ -1489,14 +1489,13 @@ struct fetch_task { */ static const struct submodule *get_non_gitmodules_submodule(const char *path) { - struct submodule *ret = NULL; + struct submodule *ret; const char *name = default_name_or_path(path); if (!name) return NULL; - ret = xmalloc(sizeof(*ret)); - memset(ret, 0, sizeof(*ret)); + CALLOC_ARRAY(ret, 1); ret->path = name; ret->name = name; @@ -1536,8 +1535,9 @@ static struct fetch_task *fetch_task_create(struct submodule_parallel_fetch *spf const char *path, const struct object_id *treeish_name) { - struct fetch_task *task = xmalloc(sizeof(*task)); - memset(task, 0, sizeof(*task)); + struct fetch_task *task; + + CALLOC_ARRAY(task, 1); if (validate_submodule_path(path) < 0) exit(128); base-commit: 063bcebf0c917140ca0e705cbe0fdea127e90086 -- gitgitgadget ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH v10] git: use calloc instead of malloc + memset where possible 2024-12-18 1:26 ` [PATCH v10] git: use calloc instead of malloc + memset " AreaZR via GitGitGadget @ 2024-12-18 15:39 ` Junio C Hamano 2024-12-18 16:48 ` [PATCH v11] " AreaZR via GitGitGadget 1 sibling, 0 replies; 16+ messages in thread From: Junio C Hamano @ 2024-12-18 15:39 UTC (permalink / raw) To: AreaZR via GitGitGadget Cc: git, Jeff Hostetler [ ], Ævar Arnfjörð Bjarmason [ ], Bagas Sanjaya [ ], AreaZR, Seija Kijin "AreaZR via GitGitGadget" <gitgitgadget@gmail.com> writes: > From: Seija Kijin <doremylover123@gmail.com> > > Avoid calling malloc + memset by calling calloc. > > Signed-off-by: Seija <doremylover123@gmail.com> Name mismatch. > remote.c | 4 ++-- > submodule.c | 10 +++++----- > 2 files changed, 7 insertions(+), 7 deletions(-) I somehow hoped to see that this shrinks the line count, as you are essentially replacing two calls (malloc + memset) with one, but that is not what is happening, which is a bit disapointing. But this is a strict improvement, I guess. The reader needs to be familiar with the CALLOC_ARRAY() macro to understand it, which may make the code less newbie-friendly (as opposed to malloc+memset any reasonably competent C programmer would understand without any prior knowledge of the conventions used by this project). ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v11] git: use calloc instead of malloc + memset where possible 2024-12-18 1:26 ` [PATCH v10] git: use calloc instead of malloc + memset " AreaZR via GitGitGadget 2024-12-18 15:39 ` Junio C Hamano @ 2024-12-18 16:48 ` AreaZR via GitGitGadget 1 sibling, 0 replies; 16+ messages in thread From: AreaZR via GitGitGadget @ 2024-12-18 16:48 UTC (permalink / raw) To: git; +Cc: AreaZR, Seija Kijin From: Seija Kijin <doremylover123@gmail.com> Avoid calling malloc + memset by calling calloc. Signed-off-by: Seija Kijin <doremylover123@gmail.com> --- git: use calloc instead of malloc + memset where possible Avoid calling malloc + memset by calling calloc. cc: Jeff Hostetler git@jeffhostetler.com cc: Ævar Arnfjörð Bjarmason avarab@gmail.com cc: Bagas Sanjaya bagasdotme@gmail.com Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1390%2FAreaZR%2Fcalloc-v11 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1390/AreaZR/calloc-v11 Pull-Request: https://github.com/git/git/pull/1390 Range-diff vs v10: 1: d7b7959be0a ! 1: cd18ee951cc git: use calloc instead of malloc + memset where possible @@ Commit message Avoid calling malloc + memset by calling calloc. - Signed-off-by: Seija <doremylover123@gmail.com> + Signed-off-by: Seija Kijin <doremylover123@gmail.com> ## remote.c ## @@ remote.c: void apply_push_cas(struct push_cas_option *cas, remote.c | 4 ++-- submodule.c | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/remote.c b/remote.c index 10104d11e3c..462ff105273 100644 --- a/remote.c +++ b/remote.c @@ -2854,9 +2854,9 @@ void apply_push_cas(struct push_cas_option *cas, struct remote_state *remote_state_new(void) { - struct remote_state *r = xmalloc(sizeof(*r)); + struct remote_state *r; - memset(r, 0, sizeof(*r)); + CALLOC_ARRAY(r, 1); hashmap_init(&r->remotes_hash, remotes_hash_cmp, NULL, 0); hashmap_init(&r->branches_hash, branches_hash_cmp, NULL, 0); diff --git a/submodule.c b/submodule.c index 7ec564854d0..7707c6f48f0 100644 --- a/submodule.c +++ b/submodule.c @@ -1489,14 +1489,13 @@ struct fetch_task { */ static const struct submodule *get_non_gitmodules_submodule(const char *path) { - struct submodule *ret = NULL; + struct submodule *ret; const char *name = default_name_or_path(path); if (!name) return NULL; - ret = xmalloc(sizeof(*ret)); - memset(ret, 0, sizeof(*ret)); + CALLOC_ARRAY(ret, 1); ret->path = name; ret->name = name; @@ -1536,8 +1535,9 @@ static struct fetch_task *fetch_task_create(struct submodule_parallel_fetch *spf const char *path, const struct object_id *treeish_name) { - struct fetch_task *task = xmalloc(sizeof(*task)); - memset(task, 0, sizeof(*task)); + struct fetch_task *task; + + CALLOC_ARRAY(task, 1); if (validate_submodule_path(path) < 0) exit(128); base-commit: d882f382b3d939d90cfa58d17b17802338f05d66 -- gitgitgadget ^ permalink raw reply related [flat|nested] 16+ messages in thread
end of thread, other threads:[~2024-12-18 16:48 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2022-12-05 14:48 [PATCH] maintenance: use xcalloc instead of xmalloc where possible Rose via GitGitGadget 2022-12-05 15:01 ` Jeff Hostetler 2022-12-05 15:33 ` [PATCH v2] " Rose via GitGitGadget 2022-12-05 16:01 ` [PATCH v3] " Rose via GitGitGadget 2022-12-05 16:12 ` [PATCH v4] maintenance: use calloc instead of malloc " Rose via GitGitGadget 2022-12-06 5:03 ` Junio C Hamano 2022-12-06 17:38 ` [PATCH v5] revision: " Rose via GitGitGadget 2022-12-06 19:44 ` Ævar Arnfjörð Bjarmason 2022-12-06 19:53 ` [PATCH v6] " Rose via GitGitGadget 2022-12-07 8:44 ` Bagas Sanjaya 2024-12-18 0:30 ` [PATCH v7] " AreaZR via GitGitGadget 2024-12-18 0:48 ` [PATCH v8] git: " AreaZR via GitGitGadget 2024-12-18 0:58 ` [PATCH v9] " AreaZR via GitGitGadget 2024-12-18 1:26 ` [PATCH v10] git: use calloc instead of malloc + memset " AreaZR via GitGitGadget 2024-12-18 15:39 ` Junio C Hamano 2024-12-18 16:48 ` [PATCH v11] " AreaZR via GitGitGadget
Code repositories for project(s) associated with this public inbox https://80x24.org/mirrors/git.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).