From 3967000448807875468673398445854536525610 Mon Sep 17 00:00:00 2001 From: Scott Lagler Date: Tue, 9 Dec 2025 22:08:06 -0500 Subject: Add missing std::vector reserve calls # Conflicts: # function.cpp --- architecture.cpp | 5 +++++ basedetection.cpp | 1 + binaryninjaapi.cpp | 1 + binaryview.cpp | 3 +++ debuginfo.cpp | 3 +++ firmwareninja.cpp | 1 + function.cpp | 1 + linearviewcursor.cpp | 1 + platform.cpp | 1 + possiblevalueset.cpp | 2 ++ type.cpp | 1 + typearchive.cpp | 1 + 12 files changed, 21 insertions(+) diff --git a/architecture.cpp b/architecture.cpp index 6db5b6b5..c02f673c 100644 --- a/architecture.cpp +++ b/architecture.cpp @@ -1902,6 +1902,7 @@ vector CoreArchitecture::GetAllSemanticFlagClasses() uint32_t* regs = BNGetAllArchitectureSemanticFlagClasses(m_object, &count); vector result; + result.reserve(count); for (size_t i = 0; i < count; i++) result.push_back(regs[i]); @@ -1916,6 +1917,7 @@ vector CoreArchitecture::GetAllSemanticFlagGroups() uint32_t* regs = BNGetAllArchitectureSemanticFlagGroups(m_object, &count); vector result; + result.reserve(count); for (size_t i = 0; i < count; i++) result.push_back(regs[i]); @@ -1936,6 +1938,7 @@ vector CoreArchitecture::GetFlagsRequiredForFlagCondition(BNLowLevelIL uint32_t* flags = BNGetArchitectureFlagsRequiredForFlagCondition(m_object, cond, semClass, &count); vector result; + result.reserve(count); for (size_t i = 0; i < count; i++) result.push_back(flags[i]); @@ -2079,6 +2082,7 @@ vector CoreArchitecture::GetAllRegisterStacks() uint32_t* regs = BNGetAllArchitectureRegisterStacks(m_object, &count); vector result; + result.reserve(count); for (size_t i = 0; i < count; i++) result.push_back(regs[i]); @@ -2114,6 +2118,7 @@ vector CoreArchitecture::GetAllIntrinsics() uint32_t* regs = BNGetAllArchitectureIntrinsics(m_object, &count); vector result; + result.reserve(count); for (size_t i = 0; i < count; i++) result.push_back(regs[i]); diff --git a/basedetection.cpp b/basedetection.cpp index 0b660d36..245522fb 100644 --- a/basedetection.cpp +++ b/basedetection.cpp @@ -84,6 +84,7 @@ std::vector BaseAddressDetection::GetReasonsForBas if (!reasons) return result; + result.reserve(count); for (size_t i = 0; i < count; i++) result.push_back(reasons[i]); diff --git a/binaryninjaapi.cpp b/binaryninjaapi.cpp index c35e28c8..b8718adf 100644 --- a/binaryninjaapi.cpp +++ b/binaryninjaapi.cpp @@ -454,6 +454,7 @@ BinaryNinja::ProgressFunction BinaryNinja::SplitProgress( // Keep a running count of weights for the start std::vector subpartStarts; double start = 0.0; + subpartStarts.reserve(subpartWeights.size()); for (size_t i = 0; i < subpartWeights.size(); ++i) { subpartStarts.push_back(start); diff --git a/binaryview.cpp b/binaryview.cpp index ca226119..c1a22b0f 100644 --- a/binaryview.cpp +++ b/binaryview.cpp @@ -2418,6 +2418,7 @@ vector> BinaryView::GetAllEntryFunctions() return {}; vector> result; + result.reserve(count); for (size_t i = 0; i < count; i++) result.push_back(new Function(BNNewFunctionReference(funcs[i]))); BNFreeFunctionList(funcs, count); @@ -4377,6 +4378,7 @@ vector>> BinaryView::GetDependencySortedTypes() BNQualifiedNameAndType* types = BNGetAnalysisDependencySortedTypeList(m_object, &count); vector>> result; + result.reserve(count); for (size_t i = 0; i < count; i++) { QualifiedName name = QualifiedName::FromAPIObject(&types[i].name); @@ -4647,6 +4649,7 @@ std::vector> BinaryView::GetTypeLibraries() BNTypeLibrary** libs = BNGetBinaryViewTypeLibraries(m_object, &count); vector> result; + result.reserve(count); for (size_t i = 0; i < count; ++i) { result.push_back(new TypeLibrary(BNNewTypeLibraryReference(libs[i]))); diff --git a/debuginfo.cpp b/debuginfo.cpp index b3f14383..ec02db4b 100644 --- a/debuginfo.cpp +++ b/debuginfo.cpp @@ -91,13 +91,16 @@ vector DebugInfo::GetFunctions(const string& parserName) cons return {}; vector result; + result.reserve(count); for (size_t i = 0; i < count; ++i) { vector components; + components.reserve(functions[i].componentN); for (size_t componentN = 0; componentN < functions[i].componentN; ++componentN) components.emplace_back(functions[i].components[componentN]); vector localVariables; + localVariables.reserve(functions[i].localVariableN); for (size_t localVariableN = 0; localVariableN < functions[i].localVariableN; ++localVariableN) { auto& bnVar = functions[i].localVariables[localVariableN]; diff --git a/firmwareninja.cpp b/firmwareninja.cpp index 02c62526..da54ddfe 100644 --- a/firmwareninja.cpp +++ b/firmwareninja.cpp @@ -508,6 +508,7 @@ std::vector FirmwareNinja::GetFunctionMemor FirmwareNinjaFunctionMemoryAccesses info; info.start = fma[i]->start; info.count = fma[i]->count; + info.accesses.reserve(info.count); for (size_t j = 0; j < info.count; j++) { BNFirmwareNinjaMemoryAccess access; diff --git a/function.cpp b/function.cpp index 68704e4d..f28fda90 100644 --- a/function.cpp +++ b/function.cpp @@ -733,6 +733,7 @@ Confidence> Function::GetReturnRegisters() const { BNRegisterSetWithConfidence regs = BNGetFunctionReturnRegisters(m_object); vector regList; + regList.reserve(regs.count); for (size_t i = 0; i < regs.count; i++) regList.push_back(regs.regs[i]); Confidence> result(regList, regs.confidence); diff --git a/linearviewcursor.cpp b/linearviewcursor.cpp index c468d085..8e7ef838 100644 --- a/linearviewcursor.cpp +++ b/linearviewcursor.cpp @@ -68,6 +68,7 @@ vector LinearViewCursor::GetPath() const size_t count; BNLinearViewObjectIdentifier* path = BNGetLinearViewCursorPath(m_object, &count); vector result; + result.reserve(count); for (size_t i = 0; i < count; i++) { LinearViewObjectIdentifier id; diff --git a/platform.cpp b/platform.cpp index ef32e469..1ceaf4c0 100644 --- a/platform.cpp +++ b/platform.cpp @@ -446,6 +446,7 @@ std::vector CorePlatform::GetGlobalRegisters() uint32_t* regs = BNGetPlatformGlobalRegisters(m_object, &count); std::vector result; + result.reserve(count); for (size_t i = 0; i < count; i++) result.push_back(regs[i]); diff --git a/possiblevalueset.cpp b/possiblevalueset.cpp index 93819782..f8ac6c67 100644 --- a/possiblevalueset.cpp +++ b/possiblevalueset.cpp @@ -34,6 +34,7 @@ PossibleValueSet PossibleValueSet::FromAPIObject(BNPossibleValueSet& value) result.size = value.size; if (value.state == LookupTableValue) { + result.table.reserve(value.count); for (size_t i = 0; i < value.count; i++) { LookupTableEntry entry; @@ -45,6 +46,7 @@ PossibleValueSet PossibleValueSet::FromAPIObject(BNPossibleValueSet& value) } else if ((value.state == SignedRangeValue) || (value.state == UnsignedRangeValue)) { + result.ranges.reserve(value.count); for (size_t i = 0; i < value.count; i++) result.ranges.push_back(value.ranges[i]); } diff --git a/type.cpp b/type.cpp index 17f78840..086ac863 100644 --- a/type.cpp +++ b/type.cpp @@ -2218,6 +2218,7 @@ TypeBuilder& TypeBuilder::AddPointerSuffix(BNPointerSuffix ps) TypeBuilder& TypeBuilder::SetPointerSuffix(const std::set& suffix) { std::vector apiSuffix; + apiSuffix.reserve(suffix.size()); for (auto& s: suffix) { apiSuffix.push_back(s); diff --git a/typearchive.cpp b/typearchive.cpp index acd4447b..ee2bd4df 100644 --- a/typearchive.cpp +++ b/typearchive.cpp @@ -232,6 +232,7 @@ TypeContainer TypeArchive::GetTypeContainer() const bool TypeArchive::AddTypes(const std::vector& types) { std::vector apiTypes; + apiTypes.reserve(types.size()); for (auto& type : types) { BNQualifiedNameAndType qnat; -- cgit v1.3.1