diff options
author | Junio C Hamano <gitster@pobox.com> | 2011-03-15 14:22:00 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-03-15 14:22:00 -0700 |
commit | af2b1848ccf43d5df9f47e0a4fab1ac6f58be78e (patch) | |
tree | 8aa16847dfd5b0d45e84f09a8d97e5c8ff594ffb | |
parent | 848e219fe696b45d36353d12cdb47870cae2559e (diff) | |
parent | 9d158601b3cb9753825e21441c88d31297b97be5 (diff) | |
download | git-af2b1848ccf43d5df9f47e0a4fab1ac6f58be78e.tar.gz git-af2b1848ccf43d5df9f47e0a4fab1ac6f58be78e.tar.xz |
Merge branch 'jc/maint-apply-no-double-patch'
* jc/maint-apply-no-double-patch:
apply: do not patch lines that were already patched
-rw-r--r-- | builtin/apply.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/builtin/apply.c b/builtin/apply.c index 14951daed..04f56f850 100644 --- a/builtin/apply.c +++ b/builtin/apply.c @@ -204,6 +204,7 @@ struct line { unsigned hash : 24; unsigned flag : 8; #define LINE_COMMON 1 +#define LINE_PATCHED 2 }; /* @@ -2085,7 +2086,8 @@ static int match_fragment(struct image *img, /* Quick hash check */ for (i = 0; i < preimage_limit; i++) - if (preimage->line[i].hash != img->line[try_lno + i].hash) + if ((img->line[try_lno + i].flag & LINE_PATCHED) || + (preimage->line[i].hash != img->line[try_lno + i].hash)) return 0; if (preimage_limit == preimage->nr) { @@ -2428,6 +2430,9 @@ static void update_image(struct image *img, memcpy(img->line + applied_pos, postimage->line, postimage->nr * sizeof(*img->line)); + for (i = 0; i < postimage->nr; i++) + img->line[applied_pos + i].flag |= LINE_PATCHED; + img->nr = nr; } |