Mercurial > public > mercurial-scm > hg
diff mercurial/transaction.py @ 23063:cd86a6707159 stable
transactions: fix hg recover with fncache backups
The transaction backupfiles logic was broken for 'hg recover'. The file format
is XXX\0XXX\0YYY\0YYY\0 but the parser did a couple things wrong. 1) It went one
step beyond the final \0 and tried to read past the end of the array. 2)
array[i:i+1] returns a single item, instead of two items as intended.
Added a test to catch it, which turns out to be the first actual 'hg recover'
test.
author | Durham Goode <durham@fb.com> |
---|---|
date | Mon, 20 Oct 2014 16:53:56 -0700 |
parents | 4c6198737ad8 |
children | 5dc888b79e70 |
line wrap: on
line diff
--- a/mercurial/transaction.py Sun Oct 19 16:48:33 2014 +0900 +++ b/mercurial/transaction.py Mon Oct 20 16:53:56 2014 -0700 @@ -349,8 +349,9 @@ data = fp.read() if len(data) > 0: parts = data.split('\0') - for i in xrange(0, len(parts), 2): - f, b = parts[i:i + 1] + # Skip the final part, since it's just a trailing empty space + for i in xrange(0, len(parts) - 1, 2): + f, b = parts[i:i + 2] backupentries.append((f, b, None)) _playback(file, report, opener, entries, backupentries)