diff options
| author | Mark Rowe <mark@vector35.com> | 2026-05-11 18:55:03 -0700 |
|---|---|---|
| committer | Mark Rowe <mark@vector35.com> | 2026-05-19 10:36:46 -0700 |
| commit | 76fd89667ebcee148ed2aef6790d5f1632420c5f (patch) | |
| tree | 509211fafe35dd16569abf0e14a23611979cf62f /datarenderer.cpp | |
| parent | fd40266f767e51e649fb48376e25f47a60d79765 (diff) | |
Add static DataRendererContainer::RenderLinesForData
This is a replacement for the `DataRenderer::RenderLinesForData` member
function as it is impossible to use without leaking memory.
Diffstat (limited to 'datarenderer.cpp')
| -rw-r--r-- | datarenderer.cpp | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/datarenderer.cpp b/datarenderer.cpp index d87183b5..cab10792 100644 --- a/datarenderer.cpp +++ b/datarenderer.cpp @@ -135,7 +135,7 @@ vector<DisassemblyTextLine> DataRenderer::GetLinesForData(BinaryView* data, uint for (size_t i = 0; i < prefix.size(); i++) { BNFreeString(prefixes[i].text); - for (size_t j = 0; j < prefixes[j].namesCount; j++) + for (size_t j = 0; j < prefixes[i].namesCount; j++) BNFreeString(prefixes[i].typeNames[j]); delete[] prefixes[i].typeNames; } @@ -150,6 +150,25 @@ vector<DisassemblyTextLine> DataRenderer::GetLinesForData(BinaryView* data, uint vector<DisassemblyTextLine> DataRenderer::RenderLinesForData(BinaryView* data, uint64_t addr, Type* type, const std::vector<InstructionTextToken>& prefix, size_t width, vector<pair<Type*, size_t>>& context, const string& language) { + return DataRendererContainer::RenderLinesForData(data, addr, type, prefix, width, context, language); +} + + +void DataRendererContainer::RegisterGenericDataRenderer(DataRenderer* renderer) +{ + BNRegisterGenericDataRenderer(BNGetDataRendererContainer(), renderer->GetObject()); +} + + +void DataRendererContainer::RegisterTypeSpecificDataRenderer(DataRenderer* renderer) +{ + BNRegisterTypeSpecificDataRenderer(BNGetDataRendererContainer(), renderer->GetObject()); +} + + +vector<DisassemblyTextLine> DataRendererContainer::RenderLinesForData(BinaryView* data, uint64_t addr, Type* type, + const std::vector<InstructionTextToken>& prefix, size_t width, vector<pair<Type*, size_t>>& context, const string& language) +{ BNInstructionTextToken* prefixes = InstructionTextToken::CreateInstructionTextTokenList(prefix); BNTypeContext* typeCtx = new BNTypeContext[context.size()]; for (size_t i = 0; i < context.size(); i++) @@ -166,7 +185,7 @@ vector<DisassemblyTextLine> DataRenderer::RenderLinesForData(BinaryView* data, u for (size_t i = 0; i < prefix.size(); i++) { BNFreeString(prefixes[i].text); - for (size_t j = 0; j < prefixes[j].namesCount; j++) + for (size_t j = 0; j < prefixes[i].namesCount; j++) BNFreeString(prefixes[i].typeNames[j]); delete[] prefixes[i].typeNames; } @@ -176,15 +195,3 @@ vector<DisassemblyTextLine> DataRenderer::RenderLinesForData(BinaryView* data, u BNFreeDisassemblyTextLines(lines, count); return result; } - - -void DataRendererContainer::RegisterGenericDataRenderer(DataRenderer* renderer) -{ - BNRegisterGenericDataRenderer(BNGetDataRendererContainer(), renderer->GetObject()); -} - - -void DataRendererContainer::RegisterTypeSpecificDataRenderer(DataRenderer* renderer) -{ - BNRegisterTypeSpecificDataRenderer(BNGetDataRendererContainer(), renderer->GetObject()); -} |
