summaryrefslogtreecommitdiff
path: root/binaryviewtype.cpp
diff options
context:
space:
mode:
authorBrian Potchik <brian@vector35.com>2019-08-02 22:05:36 -0400
committerBrian Potchik <brian@vector35.com>2019-08-02 22:05:36 -0400
commit93bb3e8cf9ef789b5fdbf321815ed6108291786c (patch)
tree85e86a6bb4e0728841e6e9d2fa08d0bbc3243e68 /binaryviewtype.cpp
parent26d7d2f1d5daf50583b18fe59566f5d4436f79f2 (diff)
Refactor settings system to be reference counted.
Diffstat (limited to 'binaryviewtype.cpp')
-rw-r--r--binaryviewtype.cpp17
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);
}