From 1e4532cdb3574cf646191621c82649af24639c77 Mon Sep 17 00:00:00 2001
From: Axel Farrugia <axel.farrugia@cea.fr>
Date: Tue, 24 Sep 2024 08:08:38 +0200
Subject: [PATCH] Fixed UpdateNodeNamex

---
 include/aidge/graph/GraphView.hpp | 23 +++++++++++++----------
 1 file changed, 13 insertions(+), 10 deletions(-)

diff --git a/include/aidge/graph/GraphView.hpp b/include/aidge/graph/GraphView.hpp
index 17bd3b1e9..f2789c8e5 100644
--- a/include/aidge/graph/GraphView.hpp
+++ b/include/aidge/graph/GraphView.hpp
@@ -406,16 +406,19 @@ public:
         addChild(toOtherNode, mNodeRegistry.at(fromOutNodeName), fromTensor, toTensor);
     }
 
-    inline void updateNodeName(NodePtr nodeToRename, const std::string& newName){
-        const std::string& oldName = nodeToRename->name();
-        AIDGE_ASSERT(mNodeRegistry.find(newName) != mNodeRegistry.end(), "Name {} is already used in graph {}.", newName, name());
-
-        if (nodeToRename->name() != ""){ // Case node already had a name
-            AIDGE_ASSERT(mNodeRegistry.find(oldName) != mNodeRegistry.end(), "No node named {} in graph {}, the graph may be corrupted !", oldName, name());
-            mNodeRegistry[newName] = mNodeRegistry[oldName];
-            mNodeRegistry.erase(oldName);
-        }else{ // Case node did not had a name
-            mNodeRegistry[newName] = nodeToRename;
+    inline void updateNodeName(const std::shared_ptr<Node>& node, const std::string& newName){
+        if (!newName.empty()) {
+            auto itNew = mNodeRegistry.insert(std::make_pair(newName, node));
+            if (!itNew.second) {
+                Log::notice("Replacing existing node name in graph node name registry: {}", newName);
+                (itNew.first)->second = node;
+            }
+        }
+
+        if (!node->name().empty()) {
+            const auto it = mNodeRegistry.find(node->name());
+            AIDGE_ASSERT(it != mNodeRegistry.end(), "No node named {} in graph {}, the graph may be corrupted !", node->name(), name());
+            mNodeRegistry.erase(it);
         }
     }
 
-- 
GitLab