[Support] Fix lifetime of file descriptors when using MemoryBuffer.

Clients of MemoryBuffer::getOpenFile expect it not to take ownership of the file
descriptor passed in. So don't.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176995 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Michael J. Spencer
2013-03-14 00:20:10 +00:00
parent 64a0a33307
commit cc3a595ab9
5 changed files with 41 additions and 26 deletions

View File

@@ -602,7 +602,7 @@ private:
void *FileMappingHandle;
#endif
error_code init(int FD, uint64_t Offset);
error_code init(int FD, bool CloseFD, uint64_t Offset);
public:
typedef char char_type;
@@ -633,8 +633,10 @@ public:
error_code &ec);
/// \param fd An open file descriptor to map. mapped_file_region takes
/// ownership. It must have been opended in the correct mode.
/// ownership if closefd is true. It must have been opended in the correct
/// mode.
mapped_file_region(int fd,
bool closefd,
mapmode mode,
uint64_t length,
uint64_t offset,