diff --git a/std/file.d b/std/file.d index 8a4f938d798..9a44fc5d5b1 100644 --- a/std/file.d +++ b/std/file.d @@ -227,8 +227,8 @@ void[] read(in char[] name, size_t upTo = size_t.max) @safe alias defaults = TypeTuple!(GENERIC_READ, - FILE_SHARE_READ, (SECURITY_ATTRIBUTES*).init, OPEN_EXISTING, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, + FILE_SHARE_READ | FILE_SHARE_WRITE, (SECURITY_ATTRIBUTES*).init, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_SEQUENTIAL_SCAN, HANDLE.init); auto h = trustedCreateFileW(name, defaults); @@ -331,6 +331,15 @@ version (linux) @safe unittest //writefln("'%s'", s); } +@safe unittest +{ + scope(exit) if (exists(deleteme)) remove(deleteme); + import std.stdio; + auto f = File(deleteme, "w"); + f.write("abcd"); f.flush(); + assert(read(deleteme) == "abcd"); +} + /******************************************** Read and validates (using $(XREF utf, validate)) a text file. $(D S) can be a type of array of characters of any width and constancy. No