diff --git a/source/dyaml/emitter.d b/source/dyaml/emitter.d index f00b811..cbe1177 100644 --- a/source/dyaml/emitter.d +++ b/source/dyaml/emitter.d @@ -1177,11 +1177,10 @@ struct Emitter void writeStreamStart() @system { immutable(ubyte)[] bom; - //Write BOM (always, even for UTF-8) + //Write BOM (except for UTF-8) final switch(encoding_) { case Encoding.UTF_8: - bom = ByteOrderMarks[BOM.UTF8]; break; case Encoding.UTF_16: bom = std.system.endian == Endian.littleEndian diff --git a/source/dyaml/stream.d b/source/dyaml/stream.d index 6a5ac00..eb58032 100644 --- a/source/dyaml/stream.d +++ b/source/dyaml/stream.d @@ -134,3 +134,18 @@ unittest // Clean up. remove("output.yaml"); } + +unittest // #88, #89 +{ + import dyaml.dumper, dyaml.loader; + import std.file : remove, read; + + enum fn = "output.yaml"; + scope (exit) fn.remove; + + auto dumper = Dumper(fn); + dumper.YAMLVersion = null; // supress directive + dumper.dump(Loader.fromString("Hello world".dup).load); + + assert (cast (char[]) fn.read()[0..3] == "Hel"); +}