svn_subst_stream_translated() doesn't handle mark/seek properly.
translated_stream_mark() saves and translated_stream_seek() restores
only the source stream's position, and not the internal state of
translation which it resets to "not in a translation". This will work
properly only if the marked position is not inside a keyword or EOL. It
needs to store (into the mark structure) the current state of
translation as well.
(An alternative could be to attach conditions to the use of mark/seek:
"this only works if you do XXX" - but I think that would be a Bad Thing.
The concept of streams works well precisely because we can layer
arbitrary streams on top of each other and expect them to work without
having to worry about such conditions.)
Found by code inspection, in trunk r934400.