From: Rafael Espindola Date: Wed, 16 Dec 2015 23:49:14 +0000 (+0000) Subject: Use std::unique_ptr. NFC. X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=0d2b021de66106051a388d6e9945ab8d147085d8 Use std::unique_ptr. NFC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@255852 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/MC/MCContext.h b/include/llvm/MC/MCContext.h index db2afa50b66..e5a9afd9968 100644 --- a/include/llvm/MC/MCContext.h +++ b/include/llvm/MC/MCContext.h @@ -113,7 +113,7 @@ namespace llvm { /// directive is used or it is an error. char *SecureLogFile; /// The stream that gets written to for the .secure_log_unique directive. - raw_ostream *SecureLog; + std::unique_ptr SecureLog; /// Boolean toggled when .secure_log_unique / .secure_log_reset is seen to /// catch errors if .secure_log_unique appears twice without /// .secure_log_reset appearing between them. @@ -506,9 +506,11 @@ namespace llvm { /// @} char *getSecureLogFile() { return SecureLogFile; } - raw_ostream *getSecureLog() { return SecureLog; } + raw_fd_ostream *getSecureLog() { return SecureLog.get(); } bool getSecureLogUsed() { return SecureLogUsed; } - void setSecureLog(raw_ostream *Value) { SecureLog = Value; } + void setSecureLog(std::unique_ptr Value) { + SecureLog = std::move(Value); + } void setSecureLogUsed(bool Value) { SecureLogUsed = Value; } void *allocate(unsigned Size, unsigned Align = 8) { diff --git a/lib/MC/MCContext.cpp b/lib/MC/MCContext.cpp index 383540a7a8f..b5ad518d033 100644 --- a/lib/MC/MCContext.cpp +++ b/lib/MC/MCContext.cpp @@ -63,9 +63,6 @@ MCContext::~MCContext() { // NOTE: The symbols are all allocated out of a bump pointer allocator, // we don't need to free them here. - - // If the stream for the .secure_log_unique directive was created free it. - delete (raw_ostream *)SecureLog; } //===----------------------------------------------------------------------===// diff --git a/lib/MC/MCParser/DarwinAsmParser.cpp b/lib/MC/MCParser/DarwinAsmParser.cpp index b3bb3cc4e16..73e068a3439 100644 --- a/lib/MC/MCParser/DarwinAsmParser.cpp +++ b/lib/MC/MCParser/DarwinAsmParser.cpp @@ -8,6 +8,7 @@ //===----------------------------------------------------------------------===// #include "llvm/MC/MCParser/MCAsmParserExtension.h" +#include "llvm/ADT/STLExtras.h" #include "llvm/ADT/StringRef.h" #include "llvm/ADT/StringSwitch.h" #include "llvm/ADT/Triple.h" @@ -666,17 +667,16 @@ bool DarwinAsmParser::parseDirectiveSecureLogUnique(StringRef, SMLoc IDLoc) { "environment variable unset."); // Open the secure log file if we haven't already. - raw_ostream *OS = getContext().getSecureLog(); + raw_fd_ostream *OS = getContext().getSecureLog(); if (!OS) { std::error_code EC; - OS = new raw_fd_ostream(SecureLogFile, EC, - sys::fs::F_Append | sys::fs::F_Text); - if (EC) { - delete OS; + auto NewOS = llvm::make_unique( + SecureLogFile, EC, sys::fs::F_Append | sys::fs::F_Text); + if (EC) return Error(IDLoc, Twine("can't open secure log file: ") + SecureLogFile + " (" + EC.message() + ")"); - } - getContext().setSecureLog(OS); + OS = NewOS.get(); + getContext().setSecureLog(std::move(NewOS)); } // Write the message.