From fd40266f767e51e649fb48376e25f47a60d79765 Mon Sep 17 00:00:00 2001 From: Mark Rowe Date: Mon, 11 May 2026 18:49:26 -0700 Subject: Fix incorrect reference counting in C++ API --- firmwareninja.cpp | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) (limited to 'firmwareninja.cpp') diff --git a/firmwareninja.cpp b/firmwareninja.cpp index 501ef2c5..d39923b5 100644 --- a/firmwareninja.cpp +++ b/firmwareninja.cpp @@ -63,7 +63,7 @@ FirmwareNinjaRelationship::FirmwareNinjaRelationship(Ref view, BNFir if (handle) m_object = handle; else - m_object = BNNewFirmwareNinjaRelationshipReference(BNCreateFirmwareNinjaRelationship(view->GetObject())); + m_object = BNCreateFirmwareNinjaRelationship(view->GetObject()); } @@ -204,7 +204,7 @@ Ref FirmwareNinjaRelationship::GetSecondaryExternalProjectFile() co if (!bnProjectFile) return nullptr; - return new ProjectFile(BNNewProjectFileReference(bnProjectFile)); + return new ProjectFile(bnProjectFile); } @@ -305,12 +305,6 @@ FirmwareNinjaReferenceNode::FirmwareNinjaReferenceNode(BNFirmwareNinjaReferenceN } -FirmwareNinjaReferenceNode::~FirmwareNinjaReferenceNode() -{ - BNFreeFirmwareNinjaReferenceNode(m_object); -} - - bool FirmwareNinjaReferenceNode::IsFunction() { return BNFirmwareNinjaReferenceNodeIsFunction(m_object); @@ -366,6 +360,7 @@ std::vector> FirmwareNinjaReferenceNode::GetChil BNNewFirmwareNinjaReferenceNodeReference(bnChildren[i]))); } + BNFreeFirmwareNinjaReferenceNodes(bnChildren, count); return result; } @@ -623,7 +618,7 @@ Ref FirmwareNinja::GetReferenceTree( if (!bnReferenceTree) return nullptr; - return new FirmwareNinjaReferenceNode(BNNewFirmwareNinjaReferenceNodeReference(bnReferenceTree)); + return new FirmwareNinjaReferenceNode(bnReferenceTree); } @@ -641,7 +636,7 @@ Ref FirmwareNinja::GetReferenceTree( if (!bnReferenceTree) return nullptr; - return new FirmwareNinjaReferenceNode(BNNewFirmwareNinjaReferenceNodeReference(bnReferenceTree)); + return new FirmwareNinjaReferenceNode(bnReferenceTree); } @@ -658,7 +653,7 @@ Ref FirmwareNinja::GetReferenceTree( if (!bnReferenceTree) return nullptr; - return new FirmwareNinjaReferenceNode(BNNewFirmwareNinjaReferenceNodeReference(bnReferenceTree)); + return new FirmwareNinjaReferenceNode(bnReferenceTree); } -- cgit v1.3.1