summaryrefslogtreecommitdiffstats
path: root/include/framework/InternalLevel.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/framework/InternalLevel.h')
-rw-r--r--include/framework/InternalLevel.h8
1 files changed, 6 insertions, 2 deletions
diff --git a/include/framework/InternalLevel.h b/include/framework/InternalLevel.h
index e67ae45..6cdac4e 100644
--- a/include/framework/InternalLevel.h
+++ b/include/framework/InternalLevel.h
@@ -106,6 +106,7 @@ public:
for (size_t i=0; i<m_shards.size(); i++) {
if (m_owns[i]) {
delete m_shards[i];
+ m_shards[i] = nullptr;
m_owns[i] = false;
}
}
@@ -113,6 +114,7 @@ public:
m_shards[0] = m_pending_shard;
m_owns[0] = true;
m_pending_shard = nullptr;
+ m_shard_cnt = 1;
}
}
@@ -241,13 +243,15 @@ private:
std::vector<bool> m_owns;
- InternalLevel *clone() {
- auto new_level = new InternalLevel(m_level_no, m_shards.size());
+ std::shared_ptr<InternalLevel> clone() {
+ auto new_level = std::make_shared<InternalLevel>(m_level_no, m_shards.size());
for (size_t i=0; i<m_shard_cnt; i++) {
new_level->m_shards[i] = m_shards[i];
new_level->m_owns[i] = true;
m_owns[i] = false;
}
+
+ return new_level;
}
};