diff options
| author | Brian Potchik <brian@vector35.com> | 2019-08-02 22:05:36 -0400 |
|---|---|---|
| committer | Brian Potchik <brian@vector35.com> | 2019-08-02 22:05:36 -0400 |
| commit | 93bb3e8cf9ef789b5fdbf321815ed6108291786c (patch) | |
| tree | 85e86a6bb4e0728841e6e9d2fa08d0bbc3243e68 /binaryviewtype.cpp | |
| parent | 26d7d2f1d5daf50583b18fe59566f5d4436f79f2 (diff) | |
Refactor settings system to be reference counted.
Diffstat (limited to 'binaryviewtype.cpp')
| -rw-r--r-- | binaryviewtype.cpp | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/binaryviewtype.cpp b/binaryviewtype.cpp index 815b508e..bd99bf80 100644 --- a/binaryviewtype.cpp +++ b/binaryviewtype.cpp @@ -43,11 +43,14 @@ bool BinaryViewType::IsValidCallback(void* ctxt, BNBinaryView* data) } -char* BinaryViewType::GetSettingsCallback(void* ctxt, BNBinaryView* data) +BNSettings* BinaryViewType::GetSettingsCallback(void* ctxt, BNBinaryView* data) { BinaryViewType* type = (BinaryViewType*)ctxt; Ref<BinaryView> view = new BinaryView(BNNewViewReference(data)); - return BNAllocString(type->GetLoadSettingsForData(view).c_str()); + Ref<Settings> result = type->GetLoadSettingsForData(view); + if (!result) + return nullptr; + return BNNewSettingsReference(result->GetObject()); } @@ -220,10 +223,10 @@ bool CoreBinaryViewType::IsTypeValidForData(BinaryView* data) } -string CoreBinaryViewType::GetLoadSettingsForData(BinaryView* data) +Ref<Settings> CoreBinaryViewType::GetLoadSettingsForData(BinaryView* data) { - char* settings = BNGetBinaryViewLoadSettingsForData(m_object, data->GetObject()); - string result = settings; - BNFreeString(settings); - return result; + BNSettings* settings = BNGetBinaryViewLoadSettingsForData(m_object, data->GetObject()); + if (!settings) + return nullptr; + return new Settings(settings); } |
