summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Support
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Support')
-rw-r--r--llvm/lib/Support/Windows/Path.inc17
1 files changed, 6 insertions, 11 deletions
diff --git a/llvm/lib/Support/Windows/Path.inc b/llvm/lib/Support/Windows/Path.inc
index a7a44158947..d8b5702bf15 100644
--- a/llvm/lib/Support/Windows/Path.inc
+++ b/llvm/lib/Support/Windows/Path.inc
@@ -464,6 +464,10 @@ std::error_code mapped_file_region::init(int FD, uint64_t Offset,
if (Size > std::numeric_limits<SIZE_T>::max())
return make_error_code(errc::invalid_argument);
+ HANDLE FileHandle = reinterpret_cast<HANDLE>(_get_osfhandle(FD));
+ if (FileHandle == INVALID_HANDLE_VALUE)
+ return make_error_code(errc::bad_file_descriptor);
+
DWORD flprotect;
switch (Mode) {
case readonly: flprotect = PAGE_READONLY; break;
@@ -518,19 +522,10 @@ std::error_code mapped_file_region::init(int FD, uint64_t Offset,
mapped_file_region::mapped_file_region(int fd, mapmode mode, uint64_t length,
uint64_t offset, std::error_code &ec)
- : Size(length), Mapping(),
- FileHandle(INVALID_HANDLE_VALUE) {
- FileHandle = reinterpret_cast<HANDLE>(_get_osfhandle(fd));
- if (FileHandle == INVALID_HANDLE_VALUE) {
- ec = make_error_code(errc::bad_file_descriptor);
- return;
- }
-
+ : Size(length), Mapping() {
ec = init(fd, offset, mode);
- if (ec) {
+ if (ec)
Mapping = 0;
- FileHandle = INVALID_HANDLE_VALUE;
- }
}
mapped_file_region::~mapped_file_region() {
OpenPOWER on IntegriCloud