summaryrefslogtreecommitdiffstats
path: root/src/entry.cpp
diff options
context:
space:
mode:
authorDimitri van Heesch <doxygen@gmail.com>2019-12-08 10:18:56 (GMT)
committerDimitri van Heesch <doxygen@gmail.com>2019-12-08 10:18:56 (GMT)
commit6d4835dbe01a27923db8a1e4559b61da5065cb7a (patch)
tree9369a394c03978c79e20ec905cbd892e27fabdd6 /src/entry.cpp
parent4a4fcdf7931efba208a57b658185de689f2ef7fb (diff)
downloadDoxygen-6d4835dbe01a27923db8a1e4559b61da5065cb7a.zip
Doxygen-6d4835dbe01a27923db8a1e4559b61da5065cb7a.tar.gz
Doxygen-6d4835dbe01a27923db8a1e4559b61da5065cb7a.tar.bz2
Changed std::unique_ptr<Entry> to std::shared_ptr<Entry> at avoid use after free issues
Diffstat (limited to 'src/entry.cpp')
-rw-r--r--src/entry.cpp26
1 files changed, 13 insertions, 13 deletions
diff --git a/src/entry.cpp b/src/entry.cpp
index 066c4a0..cc8cd1f 100644
--- a/src/entry.cpp
+++ b/src/entry.cpp
@@ -116,7 +116,7 @@ Entry::Entry(const Entry &e)
m_sublist.reserve(e.m_sublist.size());
for (const auto &cur : e.m_sublist)
{
- m_sublist.push_back(std::make_unique<Entry>(*cur));
+ m_sublist.push_back(std::make_shared<Entry>(*cur));
}
}
@@ -136,11 +136,11 @@ void Entry::moveToSubEntryAndRefresh(Entry *&current)
current = new Entry;
}
-void Entry::moveToSubEntryAndRefresh(std::unique_ptr<Entry> &current)
+void Entry::moveToSubEntryAndRefresh(std::shared_ptr<Entry> &current)
{
current->m_parent=this;
- m_sublist.push_back(std::move(current));
- current = std::make_unique<Entry>();
+ m_sublist.push_back(current);
+ current = std::make_shared<Entry>();
}
void Entry::moveToSubEntryAndKeep(Entry *current)
@@ -149,10 +149,10 @@ void Entry::moveToSubEntryAndKeep(Entry *current)
m_sublist.emplace_back(current);
}
-void Entry::moveToSubEntryAndKeep(std::unique_ptr<Entry> &current)
+void Entry::moveToSubEntryAndKeep(std::shared_ptr<Entry> &current)
{
current->m_parent=this;
- m_sublist.push_back(std::move(current));
+ m_sublist.push_back(current);
}
void Entry::copyToSubEntry(Entry *current)
@@ -162,20 +162,20 @@ void Entry::copyToSubEntry(Entry *current)
m_sublist.emplace_back(copy);
}
-void Entry::copyToSubEntry(const std::unique_ptr<Entry> &current)
+void Entry::copyToSubEntry(const std::shared_ptr<Entry> &current)
{
- std::unique_ptr<Entry> copy = std::make_unique<Entry>(*current);
+ std::shared_ptr<Entry> copy = std::make_shared<Entry>(*current);
copy->m_parent=this;
- m_sublist.push_back(std::move(copy));
+ m_sublist.push_back(copy);
}
-void Entry::moveFromSubEntry(const Entry *child,std::unique_ptr<Entry> &moveTo)
+void Entry::moveFromSubEntry(const Entry *child,std::shared_ptr<Entry> &moveTo)
{
auto it = std::find_if(m_sublist.begin(),m_sublist.end(),
- [child](const std::unique_ptr<Entry>&elem) { return elem.get()==child; });
+ [child](const std::shared_ptr<Entry>&elem) { return elem.get()==child; });
if (it!=m_sublist.end())
{
- moveTo = std::move(*it);
+ moveTo = *it;
m_sublist.erase(it);
}
else
@@ -187,7 +187,7 @@ void Entry::moveFromSubEntry(const Entry *child,std::unique_ptr<Entry> &moveTo)
void Entry::removeSubEntry(const Entry *e)
{
auto it = std::find_if(m_sublist.begin(),m_sublist.end(),
- [e](const std::unique_ptr<Entry>&elem) { return elem.get()==e; });
+ [e](const std::shared_ptr<Entry>&elem) { return elem.get()==e; });
if (it!=m_sublist.end())
{
m_sublist.erase(it);