Merge pull request #2948 from CyberShadow/pull-20150202-045026

fix Issue 14110 - std.file.read cannot read files open for writing
This commit is contained in:
Andrei Alexandrescu 2015-02-01 22:10:11 -08:00
commit accb351b96

View file

@ -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