[Lldb-commits] [PATCH] D159150: [lldb][NFCI] Replace bespoke iterator check with std::next
Alex Langford via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Tue Aug 29 17:20:03 PDT 2023
bulbazord created this revision.
bulbazord added reviewers: JDevlieghere, mib, jingham, fdeazeve.
Herald added a project: All.
bulbazord requested review of this revision.
Herald added a project: LLDB.
Herald added a subscriber: lldb-commits.
The primary goal of this change is to change `if (pair != *(--m_dict.end()))`
to `if (std::next(iter) != m_dict.end())`. I was experimenting with
changing the underlying type of `m_dict` and found that this was an
issue. Specifically, it assumes that m_dict iterators are bidirectional.
This change should make it so we only need to assume m_dict iterators can move
forward.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D159150
Files:
lldb/source/Utility/StructuredData.cpp
Index: lldb/source/Utility/StructuredData.cpp
===================================================================
--- lldb/source/Utility/StructuredData.cpp
+++ lldb/source/Utility/StructuredData.cpp
@@ -228,9 +228,9 @@
void StructuredData::Dictionary::GetDescription(lldb_private::Stream &s) const {
size_t indentation_level = s.GetIndentLevel();
- for (const auto &pair : m_dict) {
+ for (auto iter = m_dict.begin(); iter != m_dict.end(); iter++) {
// Sanitize.
- if (pair.first.IsNull() || pair.first.IsEmpty() || !pair.second)
+ if (iter->first.IsNull() || iter->first.IsEmpty() || !iter->second)
continue;
// Reset original indentation level.
@@ -238,11 +238,11 @@
s.Indent();
// Print key.
- s.Printf("%s:", pair.first.AsCString());
+ s.Printf("%s:", iter->first.AsCString());
// Return to new line and increase indentation if value is record type.
// Otherwise add spacing.
- bool should_indent = IsRecordType(pair.second);
+ bool should_indent = IsRecordType(iter->second);
if (should_indent) {
s.EOL();
s.IndentMore();
@@ -251,8 +251,8 @@
}
// Print value and new line if now last pair.
- pair.second->GetDescription(s);
- if (pair != *(--m_dict.end()))
+ iter->second->GetDescription(s);
+ if (std::next(iter) != m_dict.end())
s.EOL();
// Reset indentation level if it was incremented previously.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D159150.554532.patch
Type: text/x-patch
Size: 1433 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20230830/cf925c40/attachment.bin>
More information about the lldb-commits
mailing list