Am Fri, 27 Dec 2013 10:24:15 +0000 schrieb "Dfr" <defle...@yandex.ru>:
> On Friday, 27 December 2013 at 09:44:22 UTC, lomereiter wrote: > > The solution is to append `line.dup` instead of `line`. > > > > I guess this note in the documentation should be marked red: > >> Each front will not persist after popFront is called, so the > >> caller must copy its contents (e.g. by calling to!string) if > >> retention is needed. > > Thank you, .dup helped. To avoid allocating new memory for each line of text, byLine reuses the buffer. You are supposed to make a duplicate if you plan to keep it. It would be different if you had: string s; foreach (line; frange) { s ~= line } in which case, the _contents_ of the line buffer, not the buffer itself are appended to the string s. -- Marco