On Sunday, 15 January 2017 at 14:48:12 UTC, Nestor wrote:
After some testing I realized that byLine was not the one failing, but any string manipulation done to the obtained line. Compile the following example with and without -debug and run to see what I mean:import std.stdio, std.string; enum EXIT_SUCCESS = 0, EXIT_FAILURE = 1; int main() { version(Windows) { import core.sys.windows.wincon; SetConsoleOutputCP(65001); } auto f = File("utf16le.txt", "r"); foreach (line; f.byLine()) try { string s;debug s = cast(string)strip(line); // this is the one causing problemsif (1 > s.length) continue; writeln(s); } catch(Exception e) {writefln("Error. %s\nFile \"%s\", line %s.", e.msg, e.file, e.line);return EXIT_FAILURE; } return EXIT_SUCCESS; }
By the way, when caught, the exception says it's in file src/phobos/std/utf.d line 1217, but that file only has 784 lines. That's quite odd.
(I am compiling with dmd 2.072.2)
