Hi Stefan,
Stefan Fuhrmann <[email protected]> writes:
> Introduce a stream wrapper object that adds mark/seek support to any
> readable stream. Use it on the stdin streams in our CL tools.
[...]
What happens if someone calls svn_stream_mark(stream, &mark, pool) on the
stream and then — perhaps, much later — reads a huge amount of data from the
stream? Say, the total amount of data to read is 8 GiB, and it's processed in
small chunks. Is it true that in this case all 8 GiB of data are going to be
buffered by the stream and kept in memory?
Here is an quick example:
SVN_ERR(svn_stream_mark(buffered_stream, &mark, pool));
...
while (!eof)
{
svn_stringbuf_t *str;
svn_pool_clear(iterpool);
SVN_ERR(svn_stream_readline(buffered_stream, &str, "\n", &eof, iterpool));
...
}
Regards,
Evgeny Kotkov