diff options
author | Bent Bisballe Nyeng <deva@aasimon.org> | 2020-06-27 11:37:27 +0200 |
---|---|---|
committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2020-06-27 11:37:27 +0200 |
commit | d21701afe4230d633ae685ffeee6f5fb5a76f34d (patch) | |
tree | d91c68539a01757e1f350e3e53fdf36319ca126e /src/nodemanager.cc | |
parent | 7198cd81e1db3c92f99a7079e7820a6cdc51c40a (diff) |
Check for existing ids in the tree when creating a new node.
Diffstat (limited to 'src/nodemanager.cc')
-rw-r--r-- | src/nodemanager.cc | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/nodemanager.cc b/src/nodemanager.cc index 8c7cb56..e94c798 100644 --- a/src/nodemanager.cc +++ b/src/nodemanager.cc @@ -113,6 +113,11 @@ nodeid_t NodeManager::createId() return tree.createId(); } +bool NodeManager::hasId(nodeid_t id) +{ + return tree.hasId(id); +} + NodeIdListPair NodeManager::moveNode(nodeid_t id, nodeid_t to, nodeid_t beforeId) throw (std::exception) { @@ -210,19 +215,20 @@ NodeIdList NodeManager::updateNode(nodeid_t id, const std::string &name, return affectedNodes; } -NodeIdList NodeManager::createNode(nodeid_t parentid, nodeid_t *pid, nodeid_t insertbeforeid) +NodeIdList NodeManager::createNode(nodeid_t parentid, nodeid_t id, nodeid_t insertbeforeid) throw (std::exception) { + if(hasId(id)) + { + // Id alerady in tree, ignore + return {}; + } + NodeIdList affectedNodes; node_t t; - nodeid_t id = *pid;//createId(); t.attributes["title"] = ""; t.id = id; - if(pid) - { - *pid = id; - } try { |