From 317e7a276d716d7031be6829a9a6bbbfc182ff46 Mon Sep 17 00:00:00 2001
From: cmoineau <cyril.moineau@cea.fr>
Date: Thu, 27 Jun 2024 06:54:42 +0000
Subject: [PATCH] Fix bug when renaming a node with no name.

---
 include/aidge/graph/GraphView.hpp | 13 +++++++++----
 src/graph/Node.cpp                |  2 +-
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/include/aidge/graph/GraphView.hpp b/include/aidge/graph/GraphView.hpp
index 682634015..8b58d13bc 100644
--- a/include/aidge/graph/GraphView.hpp
+++ b/include/aidge/graph/GraphView.hpp
@@ -400,10 +400,15 @@ public:
         addChild(toOtherNode, mNodeRegistry.at(fromOutNodeName), fromTensor, toTensor);
     }
 
-    inline void updateNodeName(const std::string& oldName, const std::string& newName){
-        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);
+    inline void updateNodeName(NodePtr nodeToRename, const std::string& newName){
+        const std::string& oldName = nodeToRename->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;
+        }
     }
 
     /**
diff --git a/src/graph/Node.cpp b/src/graph/Node.cpp
index 50b8be13c..7fe155b5a 100644
--- a/src/graph/Node.cpp
+++ b/src/graph/Node.cpp
@@ -64,7 +64,7 @@ Aidge::Connector Aidge::Node::operator()(const std::vector<Connector>& ctors) {
 ///////////////////////////////////////////////////////
 
 void Aidge::Node::setName(const std::string& name) {
-    for (auto graphView : views()) graphView->updateNodeName(mName, name);
+    for (auto graphView : views()) graphView->updateNodeName(shared_from_this(), name);
     mName = name;
 }
 
-- 
GitLab