juha@tds.kth.se (Juha Sarlin) (08/23/89)
GNU diff 1.7 gives incorrect output when comparing files, where the first file consists of two concatenated copies of the second file. This script demonstrates the error: $ cat >file2 aaaa bbbb cccc ^D $ cat file2 file2 >file1 $ diff file1 file2 3d2 < cccc $ /usr/bin/diff file1 file2 4,6d3 < aaaa < bbbb < cccc And here is my fix: *** /tmp/,RCSt1a00302 Wed Aug 23 14:45:49 1989 --- io.c Wed Aug 23 14:44:34 1989 *************** *** 374,380 **** beg0 = filevec[0].prefix_end - 1; else beg0 = (filevec[0].prefix_end - 1 ! + filevec[1].buffered_chars - filevec[0].buffered_chars); /* Scan back until chars don't match or we reach that point. */ while (p0 != beg0) --- 374,380 ---- beg0 = filevec[0].prefix_end - 1; else beg0 = (filevec[0].prefix_end - 1 ! + filevec[0].buffered_chars - filevec[1].buffered_chars); /* Scan back until chars don't match or we reach that point. */ while (p0 != beg0) -- Juha Sarlin juha@tds.kth.se