From b54b47f954c9b97bdb2dbbf51ead908ccb3a4f13 Mon Sep 17 00:00:00 2001 From: Cojocaru Alexandru Date: Tue, 7 May 2013 13:01:46 +0100 Subject: cut: fix handling of overlapping ranges This issue was introduced in commit v8.21-43-g3e466ad * src/cut.c (set_fields): Process all range pairs when merging. * tests/misc/cut-huge-range.sh: Add a test for this edge case. Also fix an issue where we could miss reported errors due to truncation of the 'err' file. --- src/cut.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/cut.c') diff --git a/src/cut.c b/src/cut.c index b347b307b..9501b3aa7 100644 --- a/src/cut.c +++ b/src/cut.c @@ -496,9 +496,9 @@ set_fields (const char *fieldstr) if (rp[j].lo <= rp[i].hi) { rp[i].hi = MAX (rp[j].hi, rp[i].hi); - memmove (rp + j, rp + j + 1, - (n_rp - j - 1) * sizeof (struct range_pair)); - --n_rp; + memmove (rp + j, rp + j + 1, (n_rp - j - 1) * sizeof *rp); + n_rp--; + j--; } else break; -- cgit v1.2.3-54-g00ecf