summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--binaryninjaapi.h2
-rw-r--r--downloadprovider.cpp7
2 files changed, 9 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index 147a49fb..a11bef1c 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -3669,6 +3669,7 @@ namespace BinaryNinja
protected:
DownloadInstance(DownloadProvider* provider);
DownloadInstance(BNDownloadInstance* instance);
+ virtual ~DownloadInstance();
static void DestroyInstanceCallback(void* ctxt);
static int PerformRequestCallback(void* ctxt, const char* url);
@@ -3688,6 +3689,7 @@ namespace BinaryNinja
{
public:
CoreDownloadInstance(BNDownloadInstance* instance);
+ virtual ~CoreDownloadInstance() {};
virtual int PerformRequest(const std::string& url) override;
};
diff --git a/downloadprovider.cpp b/downloadprovider.cpp
index 0e3483df..436e2516 100644
--- a/downloadprovider.cpp
+++ b/downloadprovider.cpp
@@ -10,6 +10,7 @@ DownloadInstance::DownloadInstance(DownloadProvider* provider)
cb.context = this;
cb.destroyInstance = DestroyInstanceCallback;
cb.performRequest = PerformRequestCallback;
+ AddRefForRegistration();
m_object = BNInitDownloadInstance(provider->GetObject(), &cb);
}
@@ -20,6 +21,12 @@ DownloadInstance::DownloadInstance(BNDownloadInstance* instance)
}
+DownloadInstance::~DownloadInstance()
+{
+ BNFreeDownloadInstance(m_object);
+}
+
+
void DownloadInstance::DestroyInstanceCallback(void* ctxt)
{
DownloadInstance* instance = (DownloadInstance*)ctxt;