Mercurial > hg > mercurial-crew-with-dirclash
annotate templates/map @ 827:a61728b58dc0
Fix array overflow bug in bdiff
I ran into a bug while importing a large repository into mercurial.
The diff algorithm does not allocate a big enough array of hunks
for some test cases. This results in memory corruption, and possibly,
as in my case, a seg fault.
You should be able to reproduce this problem with any case of more
than a few lines that follows this pattern:
a b
= =
1 1
2
2 3
4
3 5
.
4 .
.
5
.
.
.
I.e., "a" has blank lines on every other line that have been removed in
"b". In this case, the number of matching hunks is equal to the number
of lines in "b". This is more than ((an + bn)/4 + 2). I'm not sure what
motivates this formula, but when I changed it to the smaller of an or
bn (+ 1), it works.
[comment added by mpm]
author | "Wallace, Eric S" <eric.s.wallace@intel.com> |
---|---|
date | Thu, 04 Aug 2005 13:25:59 -0800 |
parents | d2422f10c136 |
children | c333dfa8fa1a c2e77581bc84 |
rev | line source |
---|---|
142 | 1 header = header.tmpl |
2 footer = footer.tmpl | |
538 | 3 search = search.tmpl |
138 | 4 changelog = changelog.tmpl |
173
8da1df932c16
hgweb: make navigation of changesets a bit nicer
mpm@selenic.com
parents:
172
diff
changeset
|
5 naventry = "<a href="?cmd=changelog;rev=#rev#">#label#</a> " |
138 | 6 filedifflink = "<a href="?cmd=filediff;node=#node#;file=#file#">#file#</a> " |
7 filenodelink = "<a href="?cmd=file;filenode=#filenode#;file=#file#">#file#</a> " | |
8 fileellipses = "..." | |
9 changelogentry = changelogentry.tmpl | |
708
e849b4db6c95
Use changelogentry.tmpl for search results, too.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
672
diff
changeset
|
10 searchentry = changelogentry.tmpl |
138 | 11 changeset = changeset.tmpl |
12 manifest = manifest.tmpl | |
359 | 13 manifestdirentry = "<tr class="parity#parity#"><td><tt>drwxr-xr-x</tt> <td><a href="?cmd=manifest;manifest=#manifest#;path=#path#">#basename#/</a>" |
14 manifestfileentry = "<tr class="parity#parity#"><td><tt>#permissions|permissions#</tt> <td><a href="?cmd=file;filenode=#filenode#;file=#file#">#basename#</a>" | |
138 | 15 filerevision = filerevision.tmpl |
16 fileannotate = fileannotate.tmpl | |
17 filediff = filediff.tmpl | |
18 filelog = filelog.tmpl | |
201
f918a6fa2572
hgweb: add template filters, template style maps, and raw pages
mpm@selenic.com
parents:
173
diff
changeset
|
19 fileline = "<div class="parity#parity#"><span class="lineno">#linenumber# </span>#line|escape#</div>" |
138 | 20 filelogentry = filelogentry.tmpl |
235
eb341488aa4c
Obfuscate author in all HTML templates.
Thomas Arendsen Hein <thomas@intevation.de>
parents:
201
diff
changeset
|
21 annotateline = "<tr class="parity#parity#"><td class="annotate"><a href="?cmd=changeset;node=#node#">#author|obfuscate#@#rev#</a></td><td><pre>#line|escape#</pre></td></tr>" |
672
dbe0ce2ae196
More IE friendly diff output related templates.
Edouard Gomez <ed.gomez@free.fr>
parents:
602
diff
changeset
|
22 difflineplus = "<span class="plusline">#line|escape#</span>" |
dbe0ce2ae196
More IE friendly diff output related templates.
Edouard Gomez <ed.gomez@free.fr>
parents:
602
diff
changeset
|
23 difflineminus = "<span class="minusline">#line|escape#</span>" |
dbe0ce2ae196
More IE friendly diff output related templates.
Edouard Gomez <ed.gomez@free.fr>
parents:
602
diff
changeset
|
24 difflineat = "<span class="atline">#line|escape#</span>" |
dbe0ce2ae196
More IE friendly diff output related templates.
Edouard Gomez <ed.gomez@free.fr>
parents:
602
diff
changeset
|
25 diffline = "#line|escape#" |
602 | 26 changelogparent = "<tr><th class="parent">parent #rev#:</th><td class="parent"><a href="?cmd=changeset;node=#node#">#node|short#</a></td></tr>" |
27 changesetparent = "<tr><th class="parent">parent #rev#:</th><td class="parent"><a href="?cmd=changeset;node=#node#">#node|short#</a></td></tr>" | |
375 | 28 filerevparent = "<tr><td class="metatag">parent:</td><td><a href="?cmd=file;file=#file#;filenode=#node#">#node|short#</a></td></tr>" |
29 fileannotateparent = "<tr><td class="metatag">parent:</td><td><a href="?cmd=annotate;file=#file#;filenode=#node#">#node|short#</a></td></tr>" | |
168 | 30 tags = tags.tmpl |
586 | 31 tagentry = "<li class="tagEntry parity#parity#"><span class="node">#node#</span> <a href="?cmd=changeset;node=#node#">#tag#</a></li>" |
672
dbe0ce2ae196
More IE friendly diff output related templates.
Edouard Gomez <ed.gomez@free.fr>
parents:
602
diff
changeset
|
32 diffblock = "<pre class="parity#parity#">#lines#</pre>" |
602 | 33 changelogtag = "<tr><th class="tag">tag:</th><td class="tag">#tag#</td></tr>" |
34 changesettag = "<tr><th class="tag">tag:</th><td class="tag">#tag#</td></tr>" | |
35 filediffparent = "<tr><th class="parent">parent #rev#:</th><td class="parent"><a href="?cmd=changeset;node=#node#">#node|short#</a></td></tr>" | |
598
f8d44a2e6928
[PATCH 4/5]: cleaning the template parent management in hgweb
mpm@selenic.com
parents:
586
diff
changeset
|
36 filelogparent = "<tr><td align="right">parent #rev#: </td><td><a href="?cmd=file;file=#file#;filenode=#node#">#node|short#</a></td></tr>" |