Hello Paul!
The differences start earlier:
Breakpoint 1 at 0xf1ac: file diff.c, line 1633.
Breakpoint 2 at 0x8e10: file context.c, line 349.
Breakpoint 3 at 0x69f4: file analyze.c, line 624.
Breakpoint 4 at 0x6a04: file analyze.c, line 628.
Breakpoint 5 at 0x82f4: file context.c, line 123.
Breakpoint 6 at 0x8fa8: file context.c, line 379.
Breakpoint 7 at 0x222e4: file util.c, line 989.
Breakpoint 8 at 0x2244c: file util.c, line 1028.
Breakpoint 1, compare_files (parent=0x61000, detype=0x5e2b4,
name0=0xbfffd8a1 "Portfile-graphite2-312", name1=0xbfffd8b8
"Portfile-graphite2") at diff.c:1633
(gdb) n, step
compare_prepped_files (parent=0x61000, cmp=0xbfffd218,
open_flags=1073741824) at diff.c:1167
(gdb) cont
Breakpoint 4, diff_2_files (cmp=0xbfffd218) at analyze.c:628
(gdb) p *script
$1 = {
link = 0x0,
inserted = 17,
deleted = 8,
line0 = -1,
line1 = -10,
ignore = true
}
This was on PPC Mac OS X 10.4.11. On macOS High Sierra, Version 10.13.6, I get
in the end:
(gdb) p *script
$1 = {
link = 0x0,
inserted = 1,
deleted = 1,
line0 = 3,
line1 = 3,
ignore = true
}
On Tiger the computed different numbers lead to first0 = -4 and first1 = -13
and use of negative indexes in pr_unidiff_hunk(), context.c:376:
363 putc ('\n', out); # prints line numbers header/label
before the actual script
364
365 struct change *next = hunk;
366 lin i = first0;
367 lin j = first1;
368
369 while (i <= last0 || j <= last1)
370 {
371
372 /* If the line isn't a difference, output the context from file
0. */
373
374 if (!next || i < next->line0)
375 {
376 char const *const *line = &curr.file[0].linbuf[i++];
377 if (! (suppress_blank_empty && **line == '\n'))
378 putc (initial_tab ? '\t' : ' ', out);
379 print_1_line (nullptr, line);
380 j++;
381 }
382 else
Why are the values negative? Does this lead to defective struct curr or line?
When does it start?
--
Greetings
Pete
With Capitalism man exploits man. With communism it's the exact opposite.