Thread View: gnu.utils.bug
1 messages
1 total messages
Started by Paul Eggert
Fri, 07 Apr 1989 22:04
GNU diff3 1.4 botches multiple contributions to an overlapping diff
Author: Paul Eggert
Date: Fri, 07 Apr 1989 22:04
Date: Fri, 07 Apr 1989 22:04
115 lines
2534 bytes
2534 bytes
If more than one input difference from the same pair of files contributes to
the same overlapping difference, diff3 version 1.4 reports a high line number
by mapping from the first input difference, but it should be mapping from the
last input difference. As a result, diff3 does not output all the lines that
it should. Here is an example. Suppose we have the following files.
File 'a' contains:
a
b
c
d
File 'b' contains:
1
2
3
4
5
6
d
File 'c' contains:
X
b
Y
c
d
Then 'diff3 a b c' should output:
====
1:1,3c
a
b
c
2:1,6c
1
2
3
4
5
6
3:1,4c
X
b
Y
c
Instead, it outputs:
====
1:1,3c
a
b
c
2:1,6c
1
2
3
4
5
6
3:1,3c
X
b
Y
The last line of output is missing, and the last 1,3c should be a 1,4c.
Here is a fix.
===================================================================
RCS file: RCS/diff3.c,v
retrieving revision 1.2
retrieving revision 1.3
diff -c -r1.2 -r1.3
*** /tmp/,RCSt1001211 Fri Apr 7 14:38:53 1989
--- /tmp/,RCSt2001211 Fri Apr 7 14:38:54 1989
***************
*** 673,679 ****
if (using[0])
{
low1 = D_LOW_MAPLINE (using[0], FILE0, FILE1, lowc);
! high1 = D_HIGH_MAPLINE (using[0], FILE0, FILE1, highc);
}
else
{
--- 673,679 ----
if (using[0])
{
low1 = D_LOW_MAPLINE (using[0], FILE0, FILE1, lowc);
! high1 = D_HIGH_MAPLINE (last_using[0], FILE0, FILE1, highc);
}
else
{
***************
*** 688,694 ****
if (using[1])
{
low2 = D_LOW_MAPLINE (using[1], FILE0, FILE1, lowc);
! high2 = D_HIGH_MAPLINE (using[1], FILE0, FILE1, highc);
}
else
{
--- 688,694 ----
if (using[1])
{
low2 = D_LOW_MAPLINE (using[1], FILE0, FILE1, lowc);
! high2 = D_HIGH_MAPLINE (last_using[1], FILE0, FILE1, highc);
}
else
{
-- Paul Eggert, Twin Sun, Inc. <uunet!twinsun!eggert>
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads