diff options
Diffstat (limited to 'demangle.cpp')
| -rw-r--r-- | demangle.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/demangle.cpp b/demangle.cpp index 70a2fe08..677998d2 100644 --- a/demangle.cpp +++ b/demangle.cpp @@ -1,18 +1,22 @@ #include "binaryninjaapi.h" -using namespace BinaryNinja; using namespace std; +namespace BinaryNinja +{ bool DemangleMS(Architecture* arch, const std::string& mangledName, Type** outType, QualifiedName& outVarName) { - BNType* localType = (*outType)->GetObject(); + BNType* localType = nullptr; char** localVarName = nullptr; size_t localSize = 0; if (!BNDemangleMS(arch->GetObject(), mangledName.c_str(), &localType, &localVarName, &localSize)) return false; + if (!localType) + return false; + *outType = new Type(localType); for (size_t i = 0; i < localSize; i++) { outVarName.push_back(localVarName[i]); @@ -23,16 +27,19 @@ bool DemangleMS(Architecture* arch, } -bool DemangleGNU3(Architecture* arch, +bool DemangleGNU3(Ref<Architecture> arch, const std::string& mangledName, Type** outType, QualifiedName& outVarName) { - BNType* localType = (*outType)->GetObject(); + BNType* localType; char** localVarName = nullptr; size_t localSize = 0; if (!BNDemangleGNU3(arch->GetObject(), mangledName.c_str(), &localType, &localVarName, &localSize)) return false; + if (!localType) + return false; + *outType = new Type(localType); for (size_t i = 0; i < localSize; i++) { outVarName.push_back(localVarName[i]); @@ -41,3 +48,4 @@ bool DemangleGNU3(Architecture* arch, delete [] localVarName; return true; } +}
\ No newline at end of file |
