[Support] Fix lifetime of file descriptors when using MemoryBuffer.
[oota-llvm.git] / lib / Support / MemoryBuffer.cpp
index 1c354be2e097f1c54f798b1e6db8f008c3f1eb8c..804223725397c962e8f660e2d50f1049d71fc8b6 100644 (file)
@@ -206,7 +206,7 @@ class MemoryBufferMMapFile : public MemoryBuffer {
 public:
   MemoryBufferMMapFile(bool RequiresNullTerminator, int FD, uint64_t Len,
                        uint64_t Offset, error_code EC)
-      : MFR(FD, sys::fs::mapped_file_region::readonly,
+      : MFR(FD, false, sys::fs::mapped_file_region::readonly,
             getLegalMapSize(Len, Offset), getLegalMapOffset(Offset), EC) {
     if (!EC) {
       const char *Start = getStart(Len, Offset);
@@ -281,6 +281,7 @@ error_code MemoryBuffer::getFile(const char *Filename,
 
   error_code ret = getOpenFile(FD, Filename, result, FileSize, FileSize,
                                0, RequiresNullTerminator);
+  close(FD);
   return ret;
 }