Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@xxxxxxxxx> --- builtin/mv.c | 35 +++++++++++++++++------------------ 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/builtin/mv.c b/builtin/mv.c index a7e02c0..5c6f58f 100644 --- a/builtin/mv.c +++ b/builtin/mv.c @@ -58,6 +58,11 @@ static const char *add_slash(const char *path) return path; } +static void move_up_one(void *p, int nmemb, int size) +{ + memmove(p, (char*)p + size, nmemb * size); +} + static struct lock_file lock_file; #define SUBMODULE_WITH_GITDIR ((const char *)1) @@ -224,24 +229,18 @@ int cmd_mv(int argc, const char **argv, const char *prefix) else string_list_insert(&src_for_dst, dst); - if (bad) { - if (ignore_errors) { - if (--argc > 0) { - memmove(source + i, source + i + 1, - (argc - i) * sizeof(char *)); - memmove(destination + i, - destination + i + 1, - (argc - i) * sizeof(char *)); - memmove(modes + i, modes + i + 1, - (argc - i) * sizeof(enum update_mode)); - memmove(submodule_gitfile + i, - submodule_gitfile + i + 1, - (argc - i) * sizeof(char *)); - i--; - } - } else - die (_("%s, source=%s, destination=%s"), - bad, src, dst); + if (!bad) + continue; + if (!ignore_errors) + die (_("%s, source=%s, destination=%s"), + bad, src, dst); + if (--argc > 0) { + int n = argc - i; + move_up_one(source + i, n, sizeof(*source)); + move_up_one(destination + i, n, sizeof(*destination)); + move_up_one(modes + i, n, sizeof(*modes)); + move_up_one(submodule_gitfile + i, n, sizeof(*submodule_gitfile)); + i--; } } -- 2.1.0.rc0.78.gc0d8480 -- 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