diff options
| -rw-r--r-- | binaryninjaapi.h | 2 | ||||
| -rw-r--r-- | downloadprovider.cpp | 7 |
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; |
