Submitter | Mads Kiilerich |
---|---|
Date | Nov. 3, 2016, 9:34 p.m. |
Message ID | <a3e3c7075c3c4b92e6b8.1478208853@madski> |
Download | mbox | patch |
Permalink | /patch/17324/ |
State | Deferred |
Headers | show |
Comments
Patch
diff --git a/mercurial/bdiff.c b/mercurial/bdiff.c --- a/mercurial/bdiff.c +++ b/mercurial/bdiff.c @@ -172,10 +172,20 @@ static int longest_match(struct bdiff_li /* best match so far? we prefer matches closer to the middle to balance recursion */ - if (k > mk || (k == mk && (i <= mi || i <= half))) { + if (k > mk) { + /* a longer match is always better */ mi = i; mj = j; mk = k; + } else if (k == mk) { + if (i > mi && i <= half) { + /* better i in first lower half */ + mi = i; + mj = j; + } else if (i == mi) { + /* an earlier j is "better" */ + mj = j; + } } } }