[llvm] r325612 - [llvm-objdump] Use unique_ptr to simplify memory ownership
David Blaikie via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 20 10:48:51 PST 2018
Author: dblaikie
Date: Tue Feb 20 10:48:51 2018
New Revision: 325612
URL: http://llvm.org/viewvc/llvm-project?rev=325612&view=rev
Log:
[llvm-objdump] Use unique_ptr to simplify memory ownership
Followup to r325099/r325100 to simplify further.
Modified:
llvm/trunk/tools/llvm-objdump/MachODump.cpp
Modified: llvm/trunk/tools/llvm-objdump/MachODump.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-objdump/MachODump.cpp?rev=325612&r1=325611&r2=325612&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-objdump/MachODump.cpp (original)
+++ llvm/trunk/tools/llvm-objdump/MachODump.cpp Tue Feb 20 10:48:51 2018
@@ -2159,7 +2159,7 @@ struct DisassembleInfo {
std::vector<SectionRef> *Sections;
const char *class_name = nullptr;
const char *selector_name = nullptr;
- char *method = nullptr;
+ std::unique_ptr<char[]> method = nullptr;
char *demangled_name = nullptr;
uint64_t adrp_addr = 0;
uint32_t adrp_inst = 0;
@@ -2759,32 +2759,33 @@ static void method_reference(struct Disa
if (*ReferenceName != nullptr) {
if (strcmp(*ReferenceName, "_objc_msgSend") == 0) {
if (info->selector_name != nullptr) {
- if (info->method != nullptr)
- delete[] info->method;
if (info->class_name != nullptr) {
- info->method = new char[5 + strlen(info->class_name) +
- strlen(info->selector_name)];
- if (info->method != nullptr) {
- strcpy(info->method, "+[");
- strcat(info->method, info->class_name);
- strcat(info->method, " ");
- strcat(info->method, info->selector_name);
- strcat(info->method, "]");
- *ReferenceName = info->method;
+ info->method = llvm::make_unique<char[]>(
+ 5 + strlen(info->class_name) + strlen(info->selector_name));
+ char *method = info->method.get();
+ if (method != nullptr) {
+ strcpy(method, "+[");
+ strcat(method, info->class_name);
+ strcat(method, " ");
+ strcat(method, info->selector_name);
+ strcat(method, "]");
+ *ReferenceName = method;
*ReferenceType = LLVMDisassembler_ReferenceType_Out_Objc_Message;
}
} else {
- info->method = new char[9 + strlen(info->selector_name)];
- if (info->method != nullptr) {
+ info->method =
+ llvm::make_unique<char[]>(9 + strlen(info->selector_name));
+ char *method = info->method.get();
+ if (method != nullptr) {
if (Arch == Triple::x86_64)
- strcpy(info->method, "-[%rdi ");
+ strcpy(method, "-[%rdi ");
else if (Arch == Triple::aarch64)
- strcpy(info->method, "-[x0 ");
+ strcpy(method, "-[x0 ");
else
- strcpy(info->method, "-[r? ");
- strcat(info->method, info->selector_name);
- strcat(info->method, "]");
- *ReferenceName = info->method;
+ strcpy(method, "-[r? ");
+ strcat(method, info->selector_name);
+ strcat(method, "]");
+ *ReferenceName = method;
*ReferenceType = LLVMDisassembler_ReferenceType_Out_Objc_Message;
}
}
@@ -2792,19 +2793,19 @@ static void method_reference(struct Disa
}
} else if (strcmp(*ReferenceName, "_objc_msgSendSuper2") == 0) {
if (info->selector_name != nullptr) {
- if (info->method != nullptr)
- delete[] info->method;
- info->method = new char[17 + strlen(info->selector_name)];
- if (info->method != nullptr) {
+ info->method =
+ llvm::make_unique<char[]>(17 + strlen(info->selector_name));
+ char *method = info->method.get();
+ if (method != nullptr) {
if (Arch == Triple::x86_64)
- strcpy(info->method, "-[[%rdi super] ");
+ strcpy(method, "-[[%rdi super] ");
else if (Arch == Triple::aarch64)
- strcpy(info->method, "-[[x0 super] ");
+ strcpy(method, "-[[x0 super] ");
else
- strcpy(info->method, "-[[r? super] ");
- strcat(info->method, info->selector_name);
- strcat(info->method, "]");
- *ReferenceName = info->method;
+ strcpy(method, "-[[r? super] ");
+ strcat(method, info->selector_name);
+ strcat(method, "]");
+ *ReferenceName = method;
*ReferenceType = LLVMDisassembler_ReferenceType_Out_Objc_Message;
}
info->class_name = nullptr;
@@ -7249,12 +7250,8 @@ static void DisassembleMachO(StringRef F
TripleName = "";
ThumbTripleName = "";
- if (SymbolizerInfo.method != nullptr)
- delete[] SymbolizerInfo.method;
if (SymbolizerInfo.demangled_name != nullptr)
free(SymbolizerInfo.demangled_name);
- if (ThumbSymbolizerInfo.method != nullptr)
- delete[] ThumbSymbolizerInfo.method;
if (ThumbSymbolizerInfo.demangled_name != nullptr)
free(ThumbSymbolizerInfo.demangled_name);
}
More information about the llvm-commits
mailing list