Commits


patience: do not swallow identical neighbors This does not make much sense, because if common-unique lines swallow their neighboring ones, they count less, and another bad, shorter sequence may gain more weight than a very long sequence that was combined to just one common-unique chunk. It also much simplifies the code and avoids bugs we had to implement complex fixes for before.


add a missing include for uint8_t and switch from <inttypes.h> to <stdint.h> ok millert stsp


fix patience diff assertion failure exposed by test122


fix patience: off-by-one preventing swallow the same identical line twice


fix patience crash: iron out overlapping identical-blocks on the right


remove stray blank line


patience debug


patience comments


cosmetic: patience: use local var 'r' for right atom


cosmetic: rename local var from 'r' to 'rc'


patience: use qsort


patience: optimize: less diff_atom_cmp() via hash


fix patience iteration error; also makes dramatically faster


debug: patience: mark unique debug


patience: make it easy to switch impls for mark_unique


fix missing allocaion failure check in diff_algo_patience()


use mergesort(3) instead of qsort(3) in patience diff Fixes test failures on OpenBSD due to unstable results of qsort if two or more elements are equal. Add a compat copy of OpenBSD mergesort(3) for Linux.


check for allocation failure in diff_atoms_mark_unique_in_both_by_qsort()


wrap a comment that had overlong lines


patience: fix uninitialized rc in diff_atoms_qsort_compar


move patience data out of struct diff_atom Now allocating patience specific data only when patience is going to be used. This may allow using forward-Myers more often, since the state size per line is significantly smaller. Patience instead allocates an array, puts it in the current diff_data, and also place a pointer of the current diff_data in the root diff_data (since each atom points to the root diff_data).


patience: use qsort to optimize finding unique lines


move headers from include/diff/ to include/; makes things easier for consumers


repair DEBUG build


move some definitions from the public diff_main.h to an internal header file