Skip to content

Commit

Permalink
fix unit tests
Browse files Browse the repository at this point in the history
  • Loading branch information
Jamiras committed Dec 6, 2024
1 parent 859e3b6 commit a86495a
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 24 deletions.
14 changes: 7 additions & 7 deletions src/data/models/CodeNoteModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -152,10 +152,10 @@ const CodeNoteModel* CodeNoteModel::GetPointerNoteAtOffset(int nOffset) const
return nullptr;
}

const CodeNoteModel* CodeNoteModel::GetPointerNoteAtAddress(ra::ByteAddress nAddress) const
std::pair<ra::ByteAddress, const CodeNoteModel*> CodeNoteModel::GetPointerNoteAtAddress(ra::ByteAddress nAddress) const
{
if (m_pPointerData == nullptr)
return nullptr;
return {0, nullptr};

const auto nPointerAddress = m_pPointerData->PointerAddress;

Expand All @@ -175,7 +175,7 @@ const CodeNoteModel* CodeNoteModel::GetPointerNoteAtAddress(ra::ByteAddress nAdd
for (const auto& pOffsetNote : m_pPointerData->OffsetNotes)
{
if (nOffset == pOffsetNote.GetAddress())
return &pOffsetNote;
return {nPointerAddress + pOffsetNote.GetAddress(), &pOffsetNote};
}

// check for trailing bytes in a multi-byte note
Expand All @@ -185,7 +185,7 @@ const CodeNoteModel* CodeNoteModel::GetPointerNoteAtAddress(ra::ByteAddress nAdd
{
const auto nBytes = ra::to_signed(pOffsetNote.GetBytes());
if (nBytes > 1 && nOffset < pOffsetNote.GetAddress() + nBytes)
return &pOffsetNote;
return {nPointerAddress + pOffsetNote.GetAddress(), &pOffsetNote};
}
}
}
Expand All @@ -197,15 +197,15 @@ const CodeNoteModel* CodeNoteModel::GetPointerNoteAtAddress(ra::ByteAddress nAdd
{
if (pOffsetNote.IsPointer())
{
const auto* pNestedObject = pOffsetNote.GetPointerNoteAtAddress(nAddress);
if (pNestedObject != nullptr)
auto pNestedObject = pOffsetNote.GetPointerNoteAtAddress(nAddress);
if (pNestedObject.second)
return pNestedObject;
}
}
}

// not found
return nullptr;
return {0, nullptr};
}

bool CodeNoteModel::GetPointerChain(std::vector<const CodeNoteModel*>& vChain, const CodeNoteModel& pRootNote) const
Expand Down
2 changes: 1 addition & 1 deletion src/data/models/CodeNoteModel.hh
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ public:
ra::ByteAddress GetPointerAddress() const noexcept;
uint32_t GetRawPointerValue() const noexcept;
const CodeNoteModel* GetPointerNoteAtOffset(int nOffset) const;
const CodeNoteModel* GetPointerNoteAtAddress(ra::ByteAddress nAddress) const;
std::pair<ra::ByteAddress, const CodeNoteModel*> GetPointerNoteAtAddress(ra::ByteAddress nAddress) const;

bool GetPointerChain(std::vector<const CodeNoteModel*>& vChain, const CodeNoteModel& pRootNote) const;

Expand Down
28 changes: 12 additions & 16 deletions src/data/models/CodeNotesModel.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -174,9 +174,9 @@ ra::ByteAddress CodeNotesModel::FindCodeNoteStart(ra::ByteAddress nAddress) cons
{
for (const auto& pNote : m_vCodeNotes)
{
const auto* pNestedNote = pNote.GetPointerNoteAtAddress(nAddress);
if (pNestedNote != nullptr)
return pNote.GetPointerAddress() + pNestedNote->GetAddress();
auto pair = pNote.GetPointerNoteAtAddress(nAddress);
if (pair.second != nullptr)
return pair.first;
}
}

Expand Down Expand Up @@ -254,17 +254,17 @@ std::wstring CodeNotesModel::FindCodeNote(ra::ByteAddress nAddress, MemSize nSiz
{
for (const auto& pCodeNote2 : m_vCodeNotes)
{
const auto* pair = pCodeNote2.GetPointerNoteAtAddress(nAddress);
if (pair != nullptr)
return BuildCodeNoteSized(nAddress, nCheckBytes, pCodeNote2.GetPointerAddress() + pair->GetAddress(), *pair) + L" [indirect]";
const auto pair = pCodeNote2.GetPointerNoteAtAddress(nAddress);
if (pair.second != nullptr)
return BuildCodeNoteSized(nAddress, nCheckBytes, pair.first, *pair.second) + L" [indirect]";
}

const auto nLastAddress = nAddress + nCheckBytes - 1;
for (const auto& pCodeNote2 : m_vCodeNotes)
{
const auto pair = pCodeNote2.GetPointerNoteAtAddress(nLastAddress);
if (pair != nullptr)
return BuildCodeNoteSized(nAddress, nCheckBytes, pCodeNote2.GetPointerAddress() + pair->GetAddress(), *pair) + L" [indirect]";
if (pair.second != nullptr)
return BuildCodeNoteSized(nAddress, nCheckBytes, pair.first, *pair.second) + L" [indirect]";
}
}

Expand Down Expand Up @@ -319,7 +319,7 @@ void CodeNotesModel::SetCodeNote(ra::ByteAddress nAddress, const std::wstring& s
if (pIter2 == m_mOriginalCodeNotes.end())
{
// note wasn't previously modified
if (pCodeNote != m_vCodeNotes.end())
if (pCodeNote != m_vCodeNotes.end() && pCodeNote->GetAddress() == nAddress)
{
// capture the original value
m_mOriginalCodeNotes.insert_or_assign(nAddress,
Expand Down Expand Up @@ -381,13 +381,9 @@ std::pair<ra::ByteAddress, const CodeNoteModel*>
{
for (const auto& pCodeNote : m_vCodeNotes)
{
const auto* pNote = pCodeNote.GetPointerNoteAtAddress(nAddress);
if (pNote != nullptr)
{
const auto nAdjustedAddress = pCodeNote.GetPointerAddress() + pNote->GetAddress();
if (nAdjustedAddress == nAddress) // only match start of note
return {pCodeNote.GetAddress(), pNote};
}
auto pair= pCodeNote.GetPointerNoteAtAddress(nAddress);
if (pair.second != nullptr && pair.first == nAddress) // only match start of note
return {pCodeNote.GetAddress(), pair.second};
}

return {0, nullptr};
Expand Down

0 comments on commit a86495a

Please sign in to comment.