Re: [PATCH] Use ALLOC_GROW() instead of inline code

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



2014-02-28 4:45 GMT+08:00 Dmitry S. Dolzhenko <dmitrys.dolzhenko@xxxxxxxxx>:
> Signed-off-by: Dmitry S. Dolzhenko <dmitrys.dolzhenko@xxxxxxxxx>
> ---
>  attr.c                 |  7 +------
>  builtin/pack-objects.c |  7 +------
>  bundle.c               |  6 +-----
>  cache-tree.c           |  6 +-----
>  commit.c               |  8 ++------
>  diff.c                 | 12 ++----------
>  diffcore-rename.c      | 12 ++----------
>  dir.c                  |  5 +----
>  patch-ids.c            |  5 +----
>  read-cache.c           |  9 ++-------
>  reflog-walk.c          | 13 +++----------
>  replace_object.c       |  8 ++------
>  12 files changed, 19 insertions(+), 79 deletions(-)
>

I find another two files can be fixed this way.
- builtin/mktree.c
- sha1_file.c

I find it by searching the key word "alloc_nr" throughout the source code.
May be there are other places of this kind of code and you can find it
by other ways.

> diff --git a/attr.c b/attr.c
> index 8d13d70..734222d 100644
> --- a/attr.c
> +++ b/attr.c
> @@ -338,12 +338,7 @@ static void handle_attr_line(struct attr_stack *res,
>         a = parse_attr_line(line, src, lineno, macro_ok);
>         if (!a)
>                 return;
> -       if (res->alloc <= res->num_matches) {
> -               res->alloc = alloc_nr(res->num_matches);
> -               res->attrs = xrealloc(res->attrs,
> -                                     sizeof(struct match_attr *) *
> -                                     res->alloc);
> -       }
> +       ALLOC_GROW(res->attrs, res->num_matches + 1, res->alloc);
>         res->attrs[res->num_matches++] = a;
>  }
>
> diff --git a/builtin/pack-objects.c b/builtin/pack-objects.c
> index 541667f..92cbce8 100644
> --- a/builtin/pack-objects.c
> +++ b/builtin/pack-objects.c
> @@ -1156,12 +1156,7 @@ static int check_pbase_path(unsigned hash)
>         if (0 <= pos)
>                 return 1;
>         pos = -pos - 1;
> -       if (done_pbase_paths_alloc <= done_pbase_paths_num) {
> -               done_pbase_paths_alloc = alloc_nr(done_pbase_paths_alloc);
> -               done_pbase_paths = xrealloc(done_pbase_paths,
> -                                           done_pbase_paths_alloc *
> -                                           sizeof(unsigned));
> -       }
> +       ALLOC_GROW(done_pbase_paths, done_pbase_paths_num + 1, done_pbase_paths_alloc);
>         done_pbase_paths_num++;
>         if (pos < done_pbase_paths_num)
>                 memmove(done_pbase_paths + pos + 1,
> diff --git a/bundle.c b/bundle.c
> index e99065c..1388a3e 100644
> --- a/bundle.c
> +++ b/bundle.c
> @@ -14,11 +14,7 @@ static const char bundle_signature[] = "# v2 git bundle\n";
>  static void add_to_ref_list(const unsigned char *sha1, const char *name,
>                 struct ref_list *list)
>  {
> -       if (list->nr + 1 >= list->alloc) {
> -               list->alloc = alloc_nr(list->nr + 1);
> -               list->list = xrealloc(list->list,
> -                               list->alloc * sizeof(list->list[0]));
> -       }
> +       ALLOC_GROW(list->list, list->nr + 1, list->alloc);
>         memcpy(list->list[list->nr].sha1, sha1, 20);
>         list->list[list->nr].name = xstrdup(name);
>         list->nr++;
> diff --git a/cache-tree.c b/cache-tree.c
> index 0bbec43..30149d1 100644
> --- a/cache-tree.c
> +++ b/cache-tree.c
> @@ -75,11 +75,7 @@ static struct cache_tree_sub *find_subtree(struct cache_tree *it,
>                 return NULL;
>
>         pos = -pos-1;
> -       if (it->subtree_alloc <= it->subtree_nr) {
> -               it->subtree_alloc = alloc_nr(it->subtree_alloc);
> -               it->down = xrealloc(it->down, it->subtree_alloc *
> -                                   sizeof(*it->down));
> -       }
> +       ALLOC_GROW(it->down, it->subtree_nr + 1, it->subtree_alloc);
>         it->subtree_nr++;
>
>         down = xmalloc(sizeof(*down) + pathlen + 1);
> diff --git a/commit.c b/commit.c
> index 6bf4fe0..e004314 100644
> --- a/commit.c
> +++ b/commit.c
> @@ -147,12 +147,8 @@ int register_commit_graft(struct commit_graft *graft, int ignore_dups)
>                 return 1;
>         }
>         pos = -pos - 1;
> -       if (commit_graft_alloc <= ++commit_graft_nr) {
> -               commit_graft_alloc = alloc_nr(commit_graft_alloc);
> -               commit_graft = xrealloc(commit_graft,
> -                                       sizeof(*commit_graft) *
> -                                       commit_graft_alloc);
> -       }
> +       ALLOC_GROW(commit_graft, commit_graft_nr + 1, commit_graft_alloc);
> +       commit_graft_nr++;
>         if (pos < commit_graft_nr)
>                 memmove(commit_graft + pos + 1,
>                         commit_graft + pos,
> diff --git a/diff.c b/diff.c
> index 8e4a6a9..f5f0fd1 100644
> --- a/diff.c
> +++ b/diff.c
> @@ -1361,11 +1361,7 @@ static struct diffstat_file *diffstat_add(struct diffstat_t *diffstat,
>  {
>         struct diffstat_file *x;
>         x = xcalloc(sizeof (*x), 1);
> -       if (diffstat->nr == diffstat->alloc) {
> -               diffstat->alloc = alloc_nr(diffstat->alloc);
> -               diffstat->files = xrealloc(diffstat->files,
> -                               diffstat->alloc * sizeof(x));
> -       }
> +       ALLOC_GROW(diffstat->files, diffstat->nr + 1, diffstat->alloc);
>         diffstat->files[diffstat->nr++] = x;
>         if (name_b) {
>                 x->from_name = xstrdup(name_a);
> @@ -3965,11 +3961,7 @@ struct diff_queue_struct diff_queued_diff;
>
>  void diff_q(struct diff_queue_struct *queue, struct diff_filepair *dp)
>  {
> -       if (queue->alloc <= queue->nr) {
> -               queue->alloc = alloc_nr(queue->alloc);
> -               queue->queue = xrealloc(queue->queue,
> -                                       sizeof(dp) * queue->alloc);
> -       }
> +       ALLOC_GROW(queue->queue, queue->nr + 1, queue->alloc);
>         queue->queue[queue->nr++] = dp;
>  }
>
> diff --git a/diffcore-rename.c b/diffcore-rename.c
> index 6c7a72f..f54d5bf 100644
> --- a/diffcore-rename.c
> +++ b/diffcore-rename.c
> @@ -38,11 +38,7 @@ static struct diff_rename_dst *locate_rename_dst(struct diff_filespec *two,
>         if (!insert_ok)
>                 return NULL;
>         /* insert to make it at "first" */
> -       if (rename_dst_alloc <= rename_dst_nr) {
> -               rename_dst_alloc = alloc_nr(rename_dst_alloc);
> -               rename_dst = xrealloc(rename_dst,
> -                                     rename_dst_alloc * sizeof(*rename_dst));
> -       }
> +       ALLOC_GROW(rename_dst, rename_dst_nr + 1, rename_dst_alloc);
>         rename_dst_nr++;
>         if (first < rename_dst_nr)
>                 memmove(rename_dst + first + 1, rename_dst + first,
> @@ -82,11 +78,7 @@ static struct diff_rename_src *register_rename_src(struct diff_filepair *p)
>         }
>
>         /* insert to make it at "first" */
> -       if (rename_src_alloc <= rename_src_nr) {
> -               rename_src_alloc = alloc_nr(rename_src_alloc);
> -               rename_src = xrealloc(rename_src,
> -                                     rename_src_alloc * sizeof(*rename_src));
> -       }
> +       ALLOC_GROW(rename_src, rename_src_nr + 1, rename_src_alloc);
>         rename_src_nr++;
>         if (first < rename_src_nr)
>                 memmove(rename_src + first + 1, rename_src + first,
> diff --git a/dir.c b/dir.c
> index b35b633..72f6e2a 100644
> --- a/dir.c
> +++ b/dir.c
> @@ -1329,13 +1329,10 @@ static struct path_simplify *create_simplify(const char **pathspec)
>
>         for (nr = 0 ; ; nr++) {
>                 const char *match;
> -               if (nr >= alloc) {
> -                       alloc = alloc_nr(alloc);
> -                       simplify = xrealloc(simplify, alloc * sizeof(*simplify));
> -               }
>                 match = *pathspec++;
>                 if (!match)
>                         break;
> +               ALLOC_GROW(simplify, nr + 1, alloc);
>                 simplify[nr].path = match;
>                 simplify[nr].len = simple_length(match);
>         }
> diff --git a/patch-ids.c b/patch-ids.c
> index bc8a28f..bf81b92 100644
> --- a/patch-ids.c
> +++ b/patch-ids.c
> @@ -83,10 +83,7 @@ static struct patch_id *add_commit(struct commit *commit,
>         ent = &bucket->bucket[bucket->nr++];
>         hashcpy(ent->patch_id, sha1);
>
> -       if (ids->alloc <= ids->nr) {
> -               ids->alloc = alloc_nr(ids->nr);
> -               ids->table = xrealloc(ids->table, sizeof(ent) * ids->alloc);
> -       }
> +       ALLOC_GROW(ids->table, ids->nr + 1, ids->alloc);
>         if (pos < ids->nr)
>                 memmove(ids->table + pos + 1, ids->table + pos,
>                         sizeof(ent) * (ids->nr - pos));
> diff --git a/read-cache.c b/read-cache.c
> index 33dd676..e585541 100644
> --- a/read-cache.c
> +++ b/read-cache.c
> @@ -993,11 +993,7 @@ int add_index_entry(struct index_state *istate, struct cache_entry *ce, int opti
>         }
>
>         /* Make sure the array is big enough .. */
> -       if (istate->cache_nr == istate->cache_alloc) {
> -               istate->cache_alloc = alloc_nr(istate->cache_alloc);
> -               istate->cache = xrealloc(istate->cache,
> -                                       istate->cache_alloc * sizeof(*istate->cache));
> -       }
> +       ALLOC_GROW(istate->cache, istate->cache_nr + 1, istate->cache_alloc);
>
>         /* Add it in.. */
>         istate->cache_nr++;
> @@ -1466,8 +1462,7 @@ int read_index_from(struct index_state *istate, const char *path)
>
>         istate->version = ntohl(hdr->hdr_version);
>         istate->cache_nr = ntohl(hdr->hdr_entries);
> -       istate->cache_alloc = alloc_nr(istate->cache_nr);
> -       istate->cache = xcalloc(istate->cache_alloc, sizeof(*istate->cache));
> +       ALLOC_GROW(istate->cache, istate->cache_nr, istate->cache_alloc);
>         istate->initialized = 1;
>
>         if (istate->version == 4)
> diff --git a/reflog-walk.c b/reflog-walk.c
> index b2fbdb2..879d2ed 100644
> --- a/reflog-walk.c
> +++ b/reflog-walk.c
> @@ -26,11 +26,7 @@ static int read_one_reflog(unsigned char *osha1, unsigned char *nsha1,
>         struct complete_reflogs *array = cb_data;
>         struct reflog_info *item;
>
> -       if (array->nr >= array->alloc) {
> -               array->alloc = alloc_nr(array->nr + 1);
> -               array->items = xrealloc(array->items, array->alloc *
> -                       sizeof(struct reflog_info));
> -       }
> +       ALLOC_GROW(array->items, array->nr + 1, array->alloc);
>         item = array->items + array->nr;
>         memcpy(item->osha1, osha1, 20);
>         memcpy(item->nsha1, nsha1, 20);
> @@ -114,11 +110,8 @@ static void add_commit_info(struct commit *commit, void *util,
>                 struct commit_info_lifo *lifo)
>  {
>         struct commit_info *info;
> -       if (lifo->nr >= lifo->alloc) {
> -               lifo->alloc = alloc_nr(lifo->nr + 1);
> -               lifo->items = xrealloc(lifo->items,
> -                       lifo->alloc * sizeof(struct commit_info));
> -       }
> +
> +       ALLOC_GROW(lifo->items, lifo->nr + 1, lifo->alloc);
>         info = lifo->items + lifo->nr;
>         info->commit = commit;
>         info->util = util;
> diff --git a/replace_object.c b/replace_object.c
> index cdcaf8c..843deef 100644
> --- a/replace_object.c
> +++ b/replace_object.c
> @@ -36,12 +36,8 @@ static int register_replace_object(struct replace_object *replace,
>                 return 1;
>         }
>         pos = -pos - 1;
> -       if (replace_object_alloc <= ++replace_object_nr) {
> -               replace_object_alloc = alloc_nr(replace_object_alloc);
> -               replace_object = xrealloc(replace_object,
> -                                         sizeof(*replace_object) *
> -                                         replace_object_alloc);
> -       }
> +       ALLOC_GROW(replace_object, replace_object_nr + 1, replace_object_alloc);
> +       replace_object_nr++;
>         if (pos < replace_object_nr)
>                 memmove(replace_object + pos + 1,
>                         replace_object + pos,
> --
> 1.8.3.2
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

Cheers,
He Sun
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]