Skip to content

Commit aa8d4e4

Browse files
Onyadjbeder
authored andcommitted
up
1 parent 2f86d13 commit aa8d4e4

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

include/yaml-cpp/node/detail/memory.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ class YAML_CPP_API memory {
2525
memory() : m_nodes{} {}
2626
node& create_node();
2727
void merge(const memory& rhs);
28+
size_t size() const;
2829

2930
private:
3031
using Nodes = std::set<shared_node>;

src/memory.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ void memory_holder::merge(memory_holder& rhs) {
99
if (m_pMemory == rhs.m_pMemory)
1010
return;
1111

12+
if (m_pMemory->size() < rhs.m_pMemory->size()) {
13+
std::swap(m_pMemory, rhs.m_pMemory);
14+
}
15+
1216
m_pMemory->merge(*rhs.m_pMemory);
1317
rhs.m_pMemory = m_pMemory;
1418
}
@@ -22,5 +26,9 @@ node& memory::create_node() {
2226
void memory::merge(const memory& rhs) {
2327
m_nodes.insert(rhs.m_nodes.begin(), rhs.m_nodes.end());
2428
}
29+
30+
size_t memory::size() const {
31+
return m_nodes.size();
32+
}
2533
} // namespace detail
2634
} // namespace YAML

0 commit comments

Comments
 (0)