]> git.siccegge.de Git - frida/frida.git/blobdiff - src/gui/Mainwindow.cxx
Correctly handle function rename
[frida/frida.git] / src / gui / Mainwindow.cxx
index 654dc16aafd6f7ad386b7840a15f155ba0b84531..dfcdc76fdae6d22a6d93599c83c2f7b3f3e73ab4 100644 (file)
@@ -4,6 +4,7 @@
 #include "core/Function.hxx"
 #include "core/BasicBlock.hxx"
 #include "core/InformationManager.hxx"
+#include "core/events/RenameFunctionEvent.hxx"
 #include "widgets/ScriptingDock.hxx"
 #include "widgets/CFGScene.hxx"
 #include "widgets/FunctionWidget.hxx"
@@ -78,6 +79,12 @@ Mainwindow::Mainwindow(InformationManager* mgr)
                        auto item = new QTreeWidgetItem(external, QStringList(name.c_str()));
                        item->setBackground(0, QBrush(QColor(0xff, 0xdd, 0xdd)));
                });
+       mgr->connect_rename_function_signal([&](RenameFunctionEvent* event) {
+                       if (objects_list_by_address.find(event->address) == objects_list_by_address.end())
+                               return;
+                       auto item = objects_list_by_address[event->address];
+                       if (item) item->setText(0, event->new_name.c_str());
+               });
        setGlobalHotkeys();
 }
 
@@ -208,7 +215,6 @@ void Mainwindow::renameFunction(Function* function) {
                LOG4CXX_DEBUG(logger, "renaming Function " << function->getName()
                              << " to " << dialog.result().toStdString());
                function->setName(dialog.result().toStdString());
-               objects_list_by_address[function->getStartAddress()]->setText(0, dialog.result());
        } else {
                LOG4CXX_DEBUG(logger, "renameFunction aborted");
        }
@@ -245,8 +251,9 @@ void Mainwindow::addFunction(Function* fun) {
                        start_address = b.first;
        }
 
+       std::map<uint64_t, BasicBlockWidget*> _blocks;
        local__add_basic_block(block, this,
-                              manager, blocks, scene, start_address, 100);
+                              manager, _blocks, scene, start_address, 100);
 
        QGraphicsView * view = new QGraphicsView(scene);
        w->addTab(view, "CFG");