summaryrefslogtreecommitdiff
path: root/lib/Support/FileOutputBuffer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Support/FileOutputBuffer.cpp')
-rw-r--r--lib/Support/FileOutputBuffer.cpp16
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/Support/FileOutputBuffer.cpp b/lib/Support/FileOutputBuffer.cpp
index c01778f960..8f2c9fcce0 100644
--- a/lib/Support/FileOutputBuffer.cpp
+++ b/lib/Support/FileOutputBuffer.cpp
@@ -33,7 +33,7 @@ FileOutputBuffer::~FileOutputBuffer() {
error_code FileOutputBuffer::create(StringRef FilePath,
size_t Size,
- OwningPtr<FileOutputBuffer> &Result,
+ std::unique_ptr<FileOutputBuffer> &Result,
unsigned Flags) {
// If file already exists, it must be a regular file (to be mappable).
sys::fs::file_status Stat;
@@ -73,18 +73,28 @@ error_code FileOutputBuffer::create(StringRef FilePath,
if (EC)
return EC;
- OwningPtr<mapped_file_region> MappedFile(new mapped_file_region(
+ std::unique_ptr<mapped_file_region> MappedFile(new mapped_file_region(
FD, true, mapped_file_region::readwrite, Size, 0, EC));
if (EC)
return EC;
Result.reset(new FileOutputBuffer(MappedFile.get(), FilePath, TempFilePath));
if (Result)
- MappedFile.take();
+ MappedFile.release();
return error_code::success();
}
+error_code FileOutputBuffer::create(StringRef FilePath,
+ size_t Size,
+ OwningPtr<FileOutputBuffer> &Result,
+ unsigned Flags) {
+ std::unique_ptr<FileOutputBuffer> FOB;
+ error_code ec = create(FilePath, Size, FOB, Flags);
+ Result = std::move(FOB);
+ return ec;
+}
+
error_code FileOutputBuffer::commit(int64_t NewSmallerSize) {
// Unmap buffer, letting OS flush dirty pages to file on disk.
Region.reset(0);