summaryrefslogtreecommitdiff
path: root/binaryview.cpp
diff options
context:
space:
mode:
authorBrian Potchik <brian@vector35.com>2018-01-14 03:42:04 -0500
committerBrian Potchik <brian@vector35.com>2018-01-14 03:42:04 -0500
commit0cc77206c79257d49013c3a3ed1bf889c85b10d1 (patch)
tree7c5ddd2f6e7d4c84e622064c74ca25873f82b97b /binaryview.cpp
parent4866de9b9f0ef32dfa568aa38faafdfd4def4638 (diff)
Container Memory Reservations.
Diffstat (limited to 'binaryview.cpp')
-rw-r--r--binaryview.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/binaryview.cpp b/binaryview.cpp
index 00cd294f..0ee428e1 100644
--- a/binaryview.cpp
+++ b/binaryview.cpp
@@ -670,6 +670,7 @@ vector<BNModificationStatus> BinaryView::GetModification(uint64_t offset, size_t
len = BNGetModificationArray(m_object, offset, mod, len);
vector<BNModificationStatus> result;
+ result.reserve(len);
for (size_t i = 0; i < len; i++)
result.push_back(mod[i]);
@@ -988,6 +989,7 @@ vector<Ref<Function>> BinaryView::GetAnalysisFunctionList()
BNFunction** list = BNGetAnalysisFunctionList(m_object, &count);
vector<Ref<Function>> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
result.push_back(new Function(BNNewFunctionReference(list[i])));
@@ -1026,6 +1028,7 @@ vector<Ref<Function>> BinaryView::GetAnalysisFunctionsForAddress(uint64_t addr)
BNFunction** list = BNGetAnalysisFunctionsForAddress(m_object, addr, &count);
vector<Ref<Function>> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
result.push_back(new Function(BNNewFunctionReference(list[i])));
@@ -1058,6 +1061,7 @@ vector<Ref<BasicBlock>> BinaryView::GetBasicBlocksForAddress(uint64_t addr)
BNBasicBlock** blocks = BNGetBasicBlocksForAddress(m_object, addr, &count);
vector<Ref<BasicBlock>> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
result.push_back(new BasicBlock(BNNewBasicBlockReference(blocks[i])));
@@ -1072,6 +1076,7 @@ vector<Ref<BasicBlock>> BinaryView::GetBasicBlocksStartingAtAddress(uint64_t add
BNBasicBlock** blocks = BNGetBasicBlocksStartingAtAddress(m_object, addr, &count);
vector<Ref<BasicBlock>> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
result.push_back(new BasicBlock(BNNewBasicBlockReference(blocks[i])));
@@ -1086,6 +1091,7 @@ vector<ReferenceSource> BinaryView::GetCodeReferences(uint64_t addr)
BNReferenceSource* refs = BNGetCodeReferences(m_object, addr, &count);
vector<ReferenceSource> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
{
ReferenceSource src;
@@ -1106,6 +1112,7 @@ vector<ReferenceSource> BinaryView::GetCodeReferences(uint64_t addr, uint64_t le
BNReferenceSource* refs = BNGetCodeReferencesInRange(m_object, addr, len, &count);
vector<ReferenceSource> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
{
ReferenceSource src;
@@ -1144,6 +1151,7 @@ vector<Ref<Symbol>> BinaryView::GetSymbolsByName(const string& name)
BNSymbol** syms = BNGetSymbolsByName(m_object, name.c_str(), &count);
vector<Ref<Symbol>> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
result.push_back(new Symbol(BNNewSymbolReference(syms[i])));
@@ -1158,6 +1166,7 @@ vector<Ref<Symbol>> BinaryView::GetSymbols()
BNSymbol** syms = BNGetSymbols(m_object, &count);
vector<Ref<Symbol>> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
result.push_back(new Symbol(BNNewSymbolReference(syms[i])));
@@ -1172,6 +1181,7 @@ vector<Ref<Symbol>> BinaryView::GetSymbols(uint64_t start, uint64_t len)
BNSymbol** syms = BNGetSymbolsInRange(m_object, start, len, &count);
vector<Ref<Symbol>> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
result.push_back(new Symbol(BNNewSymbolReference(syms[i])));
@@ -1186,6 +1196,7 @@ vector<Ref<Symbol>> BinaryView::GetSymbolsOfType(BNSymbolType type)
BNSymbol** syms = BNGetSymbolsOfType(m_object, type, &count);
vector<Ref<Symbol>> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
result.push_back(new Symbol(BNNewSymbolReference(syms[i])));
@@ -1200,6 +1211,7 @@ vector<Ref<Symbol>> BinaryView::GetSymbolsOfType(BNSymbolType type, uint64_t sta
BNSymbol** syms = BNGetSymbolsOfTypeInRange(m_object, type, start, len, &count);
vector<Ref<Symbol>> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
result.push_back(new Symbol(BNNewSymbolReference(syms[i])));
@@ -1412,6 +1424,7 @@ vector<LinearDisassemblyLine> BinaryView::GetPreviousLinearDisassemblyLines(Line
settings ? settings->GetObject() : nullptr, &count);
vector<LinearDisassemblyLine> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
{
LinearDisassemblyLine line;
@@ -1420,6 +1433,7 @@ vector<LinearDisassemblyLine> BinaryView::GetPreviousLinearDisassemblyLines(Line
line.block = lines[i].block ? new BasicBlock(BNNewBasicBlockReference(lines[i].block)) : nullptr;
line.lineOffset = lines[i].lineOffset;
line.contents.addr = lines[i].contents.addr;
+ line.contents.tokens.reserve(lines[i].contents.count);
for (size_t j = 0; j < lines[i].contents.count; j++)
{
InstructionTextToken token;
@@ -1458,6 +1472,7 @@ vector<LinearDisassemblyLine> BinaryView::GetNextLinearDisassemblyLines(LinearDi
settings ? settings->GetObject() : nullptr, &count);
vector<LinearDisassemblyLine> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
{
LinearDisassemblyLine line;
@@ -1466,6 +1481,7 @@ vector<LinearDisassemblyLine> BinaryView::GetNextLinearDisassemblyLines(LinearDi
line.block = lines[i].block ? new BasicBlock(BNNewBasicBlockReference(lines[i].block)) : nullptr;
line.lineOffset = lines[i].lineOffset;
line.contents.addr = lines[i].contents.addr;
+ line.contents.tokens.reserve(lines[i].contents.count);
for (size_t j = 0; j < lines[i].contents.count; j++)
{
InstructionTextToken token;
@@ -1704,6 +1720,7 @@ vector<Segment> BinaryView::GetSegments()
BNSegment* segments = BNGetSegments(m_object, &count);
vector<Segment> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
{
Segment segment;
@@ -1777,6 +1794,7 @@ vector<Section> BinaryView::GetSections()
BNSection* sections = BNGetSections(m_object, &count);
vector<Section> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
{
Section section;
@@ -1804,6 +1822,7 @@ vector<Section> BinaryView::GetSectionsAt(uint64_t addr)
BNSection* sections = BNGetSectionsAt(m_object, addr, &count);
vector<Section> result;
+ result.reserve(count);
for (size_t i = 0; i < count; i++)
{
Section section;
@@ -1855,6 +1874,7 @@ vector<string> BinaryView::GetUniqueSectionNames(const vector<string>& names)
char** outgoingNames = BNGetUniqueSectionNames(m_object, incomingNames, names.size());
vector<string> result;
+ result.reserve(names.size());
for (size_t i = 0; i < names.size(); i++)
result.push_back(outgoingNames[i]);