зеркало из https://github.com/microsoft/git.git
Merge branch 'rs/move-array' into maint
Code clean-up. * rs/move-array: ls-files: don't try to prune an empty index apply: use COPY_ARRAY and MOVE_ARRAY in update_image() use MOVE_ARRAY add MOVE_ARRAY
This commit is contained in:
Коммит
d3b7ee087e
11
apply.c
11
apply.c
|
@ -2809,13 +2809,10 @@ static void update_image(struct apply_state *state,
|
|||
img->line_allocated = img->line;
|
||||
}
|
||||
if (preimage_limit != postimage->nr)
|
||||
memmove(img->line + applied_pos + postimage->nr,
|
||||
img->line + applied_pos + preimage_limit,
|
||||
(img->nr - (applied_pos + preimage_limit)) *
|
||||
sizeof(*img->line));
|
||||
memcpy(img->line + applied_pos,
|
||||
postimage->line,
|
||||
postimage->nr * sizeof(*img->line));
|
||||
MOVE_ARRAY(img->line + applied_pos + postimage->nr,
|
||||
img->line + applied_pos + preimage_limit,
|
||||
img->nr - (applied_pos + preimage_limit));
|
||||
COPY_ARRAY(img->line + applied_pos, postimage->line, postimage->nr);
|
||||
if (!state->allow_overlap)
|
||||
for (i = 0; i < postimage->nr; i++)
|
||||
img->line[applied_pos + i].flag |= LINE_PATCHED;
|
||||
|
|
|
@ -362,7 +362,7 @@ static void prune_index(struct index_state *istate,
|
|||
int pos;
|
||||
unsigned int first, last;
|
||||
|
||||
if (!prefix)
|
||||
if (!prefix || !istate->cache_nr)
|
||||
return;
|
||||
pos = index_name_pos(istate, prefix, prefixlen);
|
||||
if (pos < 0)
|
||||
|
@ -378,8 +378,7 @@ static void prune_index(struct index_state *istate,
|
|||
}
|
||||
last = next;
|
||||
}
|
||||
memmove(istate->cache, istate->cache + pos,
|
||||
(last - pos) * sizeof(struct cache_entry *));
|
||||
MOVE_ARRAY(istate->cache, istate->cache + pos, last - pos);
|
||||
istate->cache_nr = last - pos;
|
||||
}
|
||||
|
||||
|
|
|
@ -537,7 +537,7 @@ static void parse_branch_merge_options(char *bmo)
|
|||
die(_("Bad branch.%s.mergeoptions string: %s"), branch,
|
||||
split_cmdline_strerror(argc));
|
||||
REALLOC_ARRAY(argv, argc + 2);
|
||||
memmove(argv + 1, argv, sizeof(*argv) * (argc + 1));
|
||||
MOVE_ARRAY(argv + 1, argv, argc + 1);
|
||||
argc++;
|
||||
argv[0] = "branch.*.mergeoptions";
|
||||
parse_options(argc, argv, NULL, builtin_merge_options,
|
||||
|
|
|
@ -1298,9 +1298,8 @@ static int check_pbase_path(unsigned hash)
|
|||
done_pbase_paths_alloc);
|
||||
done_pbase_paths_num++;
|
||||
if (pos < done_pbase_paths_num)
|
||||
memmove(done_pbase_paths + pos + 1,
|
||||
done_pbase_paths + pos,
|
||||
(done_pbase_paths_num - pos - 1) * sizeof(unsigned));
|
||||
MOVE_ARRAY(done_pbase_paths + pos + 1, done_pbase_paths + pos,
|
||||
done_pbase_paths_num - pos - 1);
|
||||
done_pbase_paths[pos] = hash;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -131,9 +131,8 @@ static int do_invalidate_path(struct cache_tree *it, const char *path)
|
|||
* move 4 and 5 up one place (2 entries)
|
||||
* 2 = 6 - 3 - 1 = subtree_nr - pos - 1
|
||||
*/
|
||||
memmove(it->down+pos, it->down+pos+1,
|
||||
sizeof(struct cache_tree_sub *) *
|
||||
(it->subtree_nr - pos - 1));
|
||||
MOVE_ARRAY(it->down + pos, it->down + pos + 1,
|
||||
it->subtree_nr - pos - 1);
|
||||
it->subtree_nr--;
|
||||
}
|
||||
return 1;
|
||||
|
|
5
commit.c
5
commit.c
|
@ -223,9 +223,8 @@ int unregister_shallow(const struct object_id *oid)
|
|||
if (pos < 0)
|
||||
return -1;
|
||||
if (pos + 1 < commit_graft_nr)
|
||||
memmove(commit_graft + pos, commit_graft + pos + 1,
|
||||
sizeof(struct commit_graft *)
|
||||
* (commit_graft_nr - pos - 1));
|
||||
MOVE_ARRAY(commit_graft + pos, commit_graft + pos + 1,
|
||||
commit_graft_nr - pos - 1);
|
||||
commit_graft_nr--;
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -25,6 +25,23 @@ expression n;
|
|||
- memcpy(dst, src, n * sizeof(T));
|
||||
+ COPY_ARRAY(dst, src, n);
|
||||
|
||||
@@
|
||||
type T;
|
||||
T *dst;
|
||||
T *src;
|
||||
expression n;
|
||||
@@
|
||||
(
|
||||
- memmove(dst, src, (n) * sizeof(*dst));
|
||||
+ MOVE_ARRAY(dst, src, n);
|
||||
|
|
||||
- memmove(dst, src, (n) * sizeof(*src));
|
||||
+ MOVE_ARRAY(dst, src, n);
|
||||
|
|
||||
- memmove(dst, src, (n) * sizeof(T));
|
||||
+ MOVE_ARRAY(dst, src, n);
|
||||
)
|
||||
|
||||
@@
|
||||
type T;
|
||||
T *ptr;
|
||||
|
|
|
@ -828,6 +828,14 @@ static inline void copy_array(void *dst, const void *src, size_t n, size_t size)
|
|||
memcpy(dst, src, st_mult(size, n));
|
||||
}
|
||||
|
||||
#define MOVE_ARRAY(dst, src, n) move_array((dst), (src), (n), sizeof(*(dst)) + \
|
||||
BUILD_ASSERT_OR_ZERO(sizeof(*(dst)) == sizeof(*(src))))
|
||||
static inline void move_array(void *dst, const void *src, size_t n, size_t size)
|
||||
{
|
||||
if (n)
|
||||
memmove(dst, src, st_mult(size, n));
|
||||
}
|
||||
|
||||
/*
|
||||
* These functions help you allocate structs with flex arrays, and copy
|
||||
* the data directly into the array. For example, if you had:
|
||||
|
|
|
@ -99,8 +99,7 @@ static struct notes_merge_pair *find_notes_merge_pair_pos(
|
|||
else {
|
||||
*occupied = 0;
|
||||
if (insert_new && i < len) {
|
||||
memmove(list + i + 1, list + i,
|
||||
(len - i) * sizeof(struct notes_merge_pair));
|
||||
MOVE_ARRAY(list + i + 1, list + i, len - i);
|
||||
memset(list + i, 0, sizeof(struct notes_merge_pair));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -515,9 +515,8 @@ int remove_index_entry_at(struct index_state *istate, int pos)
|
|||
istate->cache_nr--;
|
||||
if (pos >= istate->cache_nr)
|
||||
return 0;
|
||||
memmove(istate->cache + pos,
|
||||
istate->cache + pos + 1,
|
||||
(istate->cache_nr - pos) * sizeof(struct cache_entry *));
|
||||
MOVE_ARRAY(istate->cache + pos, istate->cache + pos + 1,
|
||||
istate->cache_nr - pos);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
|
@ -43,9 +43,8 @@ static int add_entry(int insert_at, struct string_list *list, const char *string
|
|||
|
||||
ALLOC_GROW(list->items, list->nr+1, list->alloc);
|
||||
if (index < list->nr)
|
||||
memmove(list->items + index + 1, list->items + index,
|
||||
(list->nr - index)
|
||||
* sizeof(struct string_list_item));
|
||||
MOVE_ARRAY(list->items + index + 1, list->items + index,
|
||||
list->nr - index);
|
||||
list->items[index].string = list->strdup_strings ?
|
||||
xstrdup(string) : (char *)string;
|
||||
list->items[index].util = NULL;
|
||||
|
@ -77,8 +76,7 @@ void string_list_remove(struct string_list *list, const char *string,
|
|||
free(list->items[i].util);
|
||||
|
||||
list->nr--;
|
||||
memmove(list->items + i, list->items + i + 1,
|
||||
(list->nr - i) * sizeof(struct string_list_item));
|
||||
MOVE_ARRAY(list->items + i, list->items + i + 1, list->nr - i);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче