diff options
| author | Rusty Wagner <rusty@vector35.com> | 2020-06-26 23:08:45 -0400 |
|---|---|---|
| committer | Rusty Wagner <rusty@vector35.com> | 2020-06-26 23:08:45 -0400 |
| commit | a7e39c151f28453dc7ed00cf3d20959a3061f277 (patch) | |
| tree | d51293990cf6f1dd6c674bca3efcb694084b91c0 | |
| parent | c34409b32940ea37dac2b502e6ad354343440bc8 (diff) | |
Fix crash on recursive structure
| -rw-r--r-- | ui/linearview.h | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/ui/linearview.h b/ui/linearview.h index 62c0440a..fc3729a6 100644 --- a/ui/linearview.h +++ b/ui/linearview.h @@ -156,14 +156,15 @@ class BINARYNINJAUIAPI LinearView: public QAbstractScrollArea, public View, publ void ensureLineVisible(size_t line); TypeRef createStructure(BinaryNinja::QualifiedName& name, uint64_t size); - StructureRef defineInnerType(TypeRef type, TypeRef baseType, uint64_t offset, uint64_t size); - StructureRef defineInnerPointer(TypeRef type, ArchitectureRef arch, uint64_t baseAddress, uint64_t offset, uint64_t size); - StructureRef defineInnerStruct(TypeRef type, uint64_t offset, uint64_t size); - StructureRef defineInnerArray(TypeRef type, uint64_t offset, uint64_t size); - StructureRef defineInnerName(TypeRef type, uint64_t offset, uint64_t size); - StructureRef defineInnerUnknownType(QWidget* parent, TypeRef type, uint64_t offset, uint64_t size); - StructureRef defineInnerIntegerSize(TypeRef type, uint64_t offset, uint64_t size); - StructureRef defineInnerSign(TypeRef type, uint64_t offset, uint64_t size); + StructureRef defineInnerType(TypeRef type, TypeRef baseType, uint64_t offset, uint64_t size, std::set<TypeRef>& seen); + StructureRef defineInnerPointer(TypeRef type, ArchitectureRef arch, uint64_t baseAddress, + uint64_t offset, uint64_t size, std::set<TypeRef>& seen); + StructureRef defineInnerStruct(TypeRef type, uint64_t offset, uint64_t size, std::set<TypeRef>& seen); + StructureRef defineInnerArray(TypeRef type, uint64_t offset, uint64_t size, std::set<TypeRef>& seen); + StructureRef defineInnerName(TypeRef type, uint64_t offset, uint64_t size, std::set<TypeRef>& seen); + StructureRef defineInnerUnknownType(QWidget* parent, TypeRef type, uint64_t offset, uint64_t size, std::set<TypeRef>& seen); + StructureRef defineInnerIntegerSize(TypeRef type, uint64_t offset, uint64_t size, std::set<TypeRef>& seen); + StructureRef defineInnerSign(TypeRef type, uint64_t offset, uint64_t size, std::set<TypeRef>& seen); TypeRef getPointerTypeAndName(ArchitectureRef arch, uint64_t addr, std::string& name); std::string getVariableName(uint64_t addr); @@ -183,6 +184,9 @@ class BINARYNINJAUIAPI LinearView: public QAbstractScrollArea, public View, publ BNAnalysisWarningActionType getAnalysisWarningActionAtPos(const LinearViewLine& line, int x); + void getCurrentOffsetByTypeInternal(TypeRef resType, uint64_t baseAddr, uint64_t& begin, uint64_t& end, + bool singleLine, std::set<TypeRef>& seen); + private Q_SLOTS: void adjustSize(int width, int height); void viewInHexEditor(); |
