Item14368: Failure to handle edge cases leads to obscure bug in RCS.
Priority: Urgent
Current State: Closed
Released In: 2.1.4
Target Release: patch
Some edge cases can result in corrupt histories which when saved in
RcsLite.
Several cases have been found in topics (generated in 1.1.9) where the RCS history becomes corrupted. The corruption observed strongly suggests that a diff is being done against text that is not plain text, but is itself a diff.
Normally in a topic replacement we see something like this in the history:
1.1029
log
@save topic@
text
@d1 1
a1 1
%META:TOPICINFO{author="andyv" date="1453303902" format="1.1" version="1029"}%
but a corrupted history looks like this:
1.1029
log
@save topic@
text
@d1 26
a26 17
d1 1
a1 1
%META:TOPICINFO{author="andyv" date="1453303902" format="1.1" version="1029"}%
I have coded up a test for this pattern; delete, add, delete at the start of a topic. Under normal circumstances this pattern should never occur in a history unless it is broken.
I don't know how this corruption is caused, and can't find a way to reproduce it. The repair is really just to allow histories to be replayed when converting to a different store type e.g.
PlainFile.
Topics that have been repaired will stay repaired when they are next saved.
--
CrawfordCurrie - 04 Apr 2017