On Thursday, 31 August 2017 at 18:26:33 UTC, Sergei Degtiarev wrote:
Hi,
I tried to create a simple range concatenating several files, something like this:

        File[] files;
        ....
        foreach(ln; joiner(files.map!(a => a.byLine)))
                writeln(ln);

and I see every first line of each file is missing.
However, when I do same thing with separator:

        char[][] separator=["**** new file ****".dup];
        foreach(ln; joiner(files.map!(a => a.byLine), separator))
                writeln(ln);

everything works fine, both separator and first lines are printed. It looks pretty much as a bug for me, but I'm not sure I use it correctly.

Doesn't byLine() reuse a buffer, joiner probably caches the first line and calls .popFront()

Reply via email to