From 2a7e284702a9cf3cfd060fe50e7ef96621633aa4 Mon Sep 17 00:00:00 2001
From: Cyrille Bagard <nocbos@gmail.com>
Date: Wed, 5 Dec 2012 18:03:00 +0000
Subject: Fixed a bug, memory leaks and cleaned the code.

git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@296 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
---
 ChangeLog                 |  12 +
 src/common/extstr.c       |   4 +
 src/editor.c              | 667 +---------------------------------------------
 src/gtkext/gtkviewpanel.c |  17 +-
 4 files changed, 38 insertions(+), 662 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index a861c48..eea5de7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+12-12-05  Cyrille Bagard <nocbos@gmail.com>
+
+	* src/common/extstr.c:
+	Fix memory leaks.
+
+	* src/editor.c:
+	Clean the code (back to early versions!).
+
+	* src/gtkext/gtkviewpanel.c:
+	Fix an ending crash: GtkScrolledWindow sends NULL GtkAdjustments when
+	terminating.
+
 12-12-04  Cyrille Bagard <nocbos@gmail.com>
 
 	* src/gtkext/gtkbufferview.c:
diff --git a/src/common/extstr.c b/src/common/extstr.c
index 87d0b13..8249515 100644
--- a/src/common/extstr.c
+++ b/src/common/extstr.c
@@ -176,6 +176,8 @@ char *strrpl(char *haystack, const char *needle1, const char *needle2)
 
     }
 
+    regfree(&preg);
+
     return haystack;
 
 }
@@ -267,6 +269,8 @@ char *escape_crlf(char *input)
 
     }
 
+    regfree(&preg);
+
     return input;
 
 }
diff --git a/src/editor.c b/src/editor.c
index 85763bb..c533a64 100644
--- a/src/editor.c
+++ b/src/editor.c
@@ -28,39 +28,14 @@
 #include <i18n.h>
 
 
-#include "gtkext/support.h"
-
-
-
-
-
-/** exemple GTK **/
-#include <stdio.h>
-#include <stdlib.h>
-#include <signal.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <unistd.h>
-/** exemple GTK **/
-
-
 #include "project.h"
-
-#include "analysis/binary.h"
 #include "gtkext/easygtk.h"
-#include "gtkext/gtkextstatusbar.h"
-#include "gtkext/gtkblockview.h"
 #include "gtkext/gtkdockstation.h"
-#include "gtkext/gtkviewpanel.h"
-
-#include "debug/debugger.h"
-//#include "dialogs/add_shellcode.h"
-#include "dialogs/binparts.h"
-#include "dialogs/plugins.h"
+#include "gtkext/gtkextstatusbar.h"
+#include "gtkext/support.h"
 #include "gui/menus/menubar.h"
 #include "gui/panels/panel.h"
 #include "gui/tb/source.h"
-#include "panels/panel.h"
 
 
 
@@ -79,36 +54,6 @@ static gboolean on_delete_editor(GtkWidget *, GdkEvent *, gpointer);
 /* Quitte le programme en sortie de la boucle de GTK. */
 static void on_destroy_editor(GtkWidget *, gpointer);
 
-/* Charge un projet récent et met à jour la liste. */
-void mcb_open_recent_project(GtkMenuItem *, GObject *);
-
-
-
-
-/* Réagit avec le menu "Binaire -> Sélectionner les parties...". */
-static void mcb_binary_select_parts(GtkMenuItem *, GObject *);
-
-/* Réagit avec le menu "Binaire -> Sélectionner les greffons...". */
-static void mcb_binary_select_plugins(GtkMenuItem *, GObject *);
-
-
-/* Réagit avec le menu "Débogage -> Démarrer". */
-void mcb_debug_start(GtkCheckMenuItem *, gpointer);
-
-/* Réagit avec le menu "Débogage -> Mettre en pause". */
-void mcb_debug_pause(GtkCheckMenuItem *, gpointer);
-
-/* Réagit avec le menu "Débogage -> Reprendre". */
-void mcb_debug_resume(GtkCheckMenuItem *, gpointer);
-
-/* Réagit avec le menu "Débogage -> Tuer". */
-void mcb_debug_kill(GtkCheckMenuItem *, gpointer);
-
-/* Met à jour l'accessibilité aux éléments du menu "Debogage". */
-void update_debug_menu_items(GObject *, gboolean);
-
-
-
 
 
 
@@ -122,16 +67,6 @@ static void on_dock_item_switch(GtkDockStation *, GtkWidget *, GObject *);
 
 
 
-/* ------------------------- PARTIE DEDIEE AU MODE DEBOGAGE ------------------------- */
-
-
-/* Prend note d'une pause dans le débogage. */
-static void on_debugger_halted(GBinaryDebugger *, int, vmpa_t, pid_t, GObject *);
-
-
-
-
-
 /* ------------------------ INTEGRATION DE LA BARRE D'OUTILS ------------------------ */
 
 
@@ -198,44 +133,14 @@ GtkWidget *create_editor(void)
     GObject *ref;                           /* Version de référence        */
     GEditorItem *editem;                    /* Menus réactifs principaux   */
     GtkWidget *menuboard;                   /* Barre de menus principale   */
-    GtkWidget *menuitem;                    /* Elément de menu             */
-    GtkWidget *menubar;                     /* Support pour éléments       */
-    GtkWidget *submenuitem;                 /* Sous-élément de menu        */
-    GtkWidget *submenubar;                  /* Support pour sous-éléments  */
-    GSList *rgroup;                         /* Groupe des boutons radio    */
-
-
-    GtkWidget *ssubmenuitem;                /* Sous-élément de menu        */
-
 
     GtkWidget *toolbar;                     /* Barre d'outils              */
 
-  GtkWidget *vbox1;
-  GtkWidget *vpaned1;
-  GtkWidget *hpaned1;
-  GtkWidget *scrolledwindow2;
-  GtkWidget *snippet;
-  GtkWidget *statusbar;
-
-  GtkWidget *view;
-
-  GtkWidget *panel;
-
-
-
+    GtkWidget *vbox1;
+    GtkWidget *statusbar;
 
 
 
-#if 0
-    GtkWidget *vbox;                        /* Support à divisions vert.   */
-    GtkWidget *notebook;                    /* Support à onglets           */
-    GtkWidget *panel;                       /* Panneau de configuration    */
-    GtkWidget *label;                       /* Etiquette pour onglet       */
-    GtkWidget *hseparator;                  /* Barre de séparation         */
-    GtkWidget *hbuttonbox;                  /* Support horizontal de btns. */
-    GtkWidget *button;                      /* Btn. de commande inférieur  */
-#endif
-    GtkWidget *button;                      /* Btn. de commande inférieur  */
 
 
     GtkAccelGroup *accgroup;
@@ -250,6 +155,7 @@ GtkWidget *create_editor(void)
 
     icons = build_editor_icons_list();
     gtk_window_set_icon_list(GTK_WINDOW(result), icons);
+    g_list_free_full(icons, (GDestroyNotify)g_object_unref);
 
     g_signal_connect(G_OBJECT(result), "delete-event", G_CALLBACK(on_delete_editor), NULL);
     g_signal_connect(G_OBJECT(result), "destroy", G_CALLBACK(on_destroy_editor), NULL);
@@ -261,9 +167,9 @@ GtkWidget *create_editor(void)
 
 
 
-  vbox1 = gtk_vbox_new (FALSE, 0);
-  gtk_widget_show (vbox1);
-  gtk_container_add (GTK_CONTAINER (result), vbox1);
+    vbox1 = gtk_vbox_new(FALSE, 0);
+    gtk_widget_show(vbox1);
+    gtk_container_add(GTK_CONTAINER(result), vbox1);
 
 
     /* Intégration des menus */
@@ -277,95 +183,6 @@ GtkWidget *create_editor(void)
 
 
 
-    menuboard = gtk_menu_bar_new();
-    gtk_widget_show(menuboard);
-    //gtk_box_pack_start(GTK_BOX(vbox1), menuboard, FALSE, FALSE, 0);
-
-    /* Affichage */
-
-    menuitem = gtk_menu_item_new_with_mnemonic(_("_View"));
-    gtk_widget_show(menuitem);
-    gtk_container_add(GTK_CONTAINER(menuboard), menuitem);
-
-    menubar = gtk_menu_new();
-    gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menubar);
-
-    submenuitem = qck_create_menu_separator();
-    gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
-    submenuitem = qck_create_menu_separator();
-    gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
-    submenuitem = qck_create_menu_item(NULL, NULL, _("Toolbar"), NULL, NULL);
-    gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
-    submenubar = gtk_menu_new();
-    gtk_menu_item_set_submenu(GTK_MENU_ITEM(submenuitem), submenubar);
-
-    ssubmenuitem = qck_create_check_menu_item(NULL, NULL, _("Source file"), G_CALLBACK(NULL), result);
-    gtk_container_add(GTK_CONTAINER(submenubar), ssubmenuitem);
-
-
-
-
-
-    menuitem = gtk_menu_item_new_with_mnemonic(_("_Binary"));
-    gtk_widget_show(menuitem);
-    gtk_container_add(GTK_CONTAINER(menuboard), menuitem);
-
-    menubar = gtk_menu_new();
-    gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menubar);
-
-    submenuitem = qck_create_menu_item(NULL, NULL, _("Select parts..."), G_CALLBACK(mcb_binary_select_parts), ref);
-    gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
-    submenuitem = qck_create_menu_item(NULL, NULL, _("Select plugins..."), G_CALLBACK(mcb_binary_select_plugins), ref);
-    gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
-
-    menuitem = gtk_menu_item_new_with_mnemonic(_("_Debug"));
-    gtk_widget_show(menuitem);
-    gtk_container_add(GTK_CONTAINER(menuboard), menuitem);
-
-    menubar = gtk_menu_new();
-    gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), menubar);
-
-    submenuitem = qck_create_menu_item(ref, "mnu_debug_start", _("Start process"), G_CALLBACK(mcb_debug_start), result);
-    gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
-    submenuitem = qck_create_menu_item(ref, "mnu_debug_pause", _("Pause process"), G_CALLBACK(mcb_debug_pause), result);
-    gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
-    submenuitem = qck_create_menu_item(ref, "mnu_debug_resume", _("Resume process"), G_CALLBACK(mcb_debug_resume), result);
-    gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
-    submenuitem = qck_create_menu_item(ref, "mnu_debug_kill", _("Kill process"), G_CALLBACK(mcb_debug_kill), result);
-    gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
-    submenuitem = qck_create_menu_separator();
-    gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
-    submenuitem = qck_create_menu_item(ref, "mnu_debug_into", _("Step into"), NULL/*G_CALLBACK()*/, result);
-    gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
-    submenuitem = qck_create_menu_item(ref, "mnu_debug_over", _("Step over"), NULL/*G_CALLBACK()*/, result);
-    gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
-    submenuitem = qck_create_menu_item(ref, "mnu_debug_ret", _("Run until ret"), NULL/*G_CALLBACK()*/, result);
-    gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
-    submenuitem = qck_create_menu_separator();
-    gtk_container_add(GTK_CONTAINER(menubar), submenuitem);
-
-
-
-    update_debug_menu_items(ref, FALSE);
-
-
-
-
-
-
 
 
 
@@ -389,114 +206,6 @@ GtkWidget *create_editor(void)
 
 
 
-
-#if 0
-  vpaned1 = gtk_vpaned_new ();
-  gtk_widget_show (vpaned1);
-  //gtk_box_pack_start (GTK_BOX (vbox1), vpaned1, TRUE, TRUE, 0);
-  gtk_paned_set_position (GTK_PANED (vpaned1), 400);
-
-  hpaned1 = gtk_hpaned_new ();
-  gtk_widget_show (hpaned1);
-  gtk_paned_pack1 (GTK_PANED (vpaned1), hpaned1, FALSE, TRUE);
-  gtk_paned_set_position (GTK_PANED (hpaned1), 600);
-
-
-    init_panels(ref);
-
-
-    dpanel = gtk_dock_panel_new();
-    g_object_set_data(G_OBJECT(result), "binpanel", dpanel);
-    gtk_widget_show(dpanel);
-
-
-
-    g_signal_connect(dpanel, "switch-item", G_CALLBACK(on_dock_item_switch), ref);
-
-
-
-    gtk_paned_pack1(GTK_PANED(hpaned1), dpanel, TRUE, TRUE);
-
-
-
-
-
-
-    dpanel = gtk_dock_panel_new();
-    gtk_widget_show(dpanel);
-
-    g_signal_connect(dpanel, "switch-item", G_CALLBACK(on_dock_item_switch), ref);
-
-    gtk_paned_pack2(GTK_PANED(hpaned1), dpanel, TRUE, TRUE);
-
-
-    place_all_panels_in_editor(dpanel);
-
-
-    ditem = g_dock_item_new(_("Registers"), get_panel(PNT_REGISTERS));
-    gtk_dock_panel_add_item(dpanel, ditem);
-
-
-
-
-    /* Panneau inférieur */
-
-
-
-    dpanel = gtk_dock_panel_new();
-    gtk_widget_show(dpanel);
-
-    printf("bottom :: %p\n", dpanel);
-
-    gtk_paned_pack2(GTK_PANED(vpaned1), dpanel, FALSE, FALSE);
-
-    //ditem = g_dock_item_new(_("Messages"), get_panel(PNT_LOG));
-    //gtk_dock_panel_add_item(dpanel, ditem);
-
-    ditem = g_dock_item_new(_("Strings"), get_panel(PNT_STRINGS));
-    gtk_dock_panel_add_item(dpanel, ditem);
-
-
-
-    //panel = build_shell_panel(G_OBJECT(result));
-
-    //ditem = g_dock_item_new(_("Shell"), panel);
-    //gtk_dock_panel_add_item(dpanel, ditem);
-
-
-
-  /*
-
-    notebook = qck_create_notebook(NULL, NULL);
-    gtk_paned_pack2(GTK_PANED(vpaned1), notebook, FALSE, FALSE);
-
-    panel = build_strings_panel(G_OBJECT(result));
-    gtk_container_add(GTK_CONTAINER(notebook), panel);
-
-    label = qck_create_label(NULL, NULL, _("Strings"));
-    gtk_notebook_set_tab_label(GTK_NOTEBOOK(notebook), gtk_notebook_get_nth_page(GTK_NOTEBOOK(notebook), 0), label);
-
-  */
-
-
-
-
-  /*
-
-  scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
-  gtk_widget_show (scrolledwindow1);
-  gtk_paned_pack2 (GTK_PANED (vpaned1), scrolledwindow1, TRUE, TRUE);
-
-  textview1 = gtk_text_view_new ();
-  gtk_widget_show (textview1);
-  gtk_container_add (GTK_CONTAINER (scrolledwindow1), textview1);
-
-
-  */
-
-
-#endif
-
     statusbar = gtk_extended_status_bar_new();
     g_object_set_data(ref, "statusbar", statusbar);
 
@@ -542,7 +251,7 @@ static gboolean on_delete_editor(GtkWidget *widget, GdkEvent *event, gpointer da
 
     if (g_study_project_get_filename(project) == NULL)
     {
-        dialog = gtk_message_dialog_new(widget,
+        dialog = gtk_message_dialog_new(GTK_WINDOW(widget),
                                         GTK_DIALOG_DESTROY_WITH_PARENT,
                                         GTK_MESSAGE_QUESTION,
                                         GTK_BUTTONS_NONE,
@@ -606,334 +315,15 @@ static void on_destroy_editor(GtkWidget *widget, gpointer data)
 
 
 
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : menuitem = élément de menu sélectionné.                      *
-*                ref      = adresse de l'espace de référencement global.      *
-*                                                                             *
-*  Description : Charge un projet récent et met à jour la liste.              *
-*                                                                             *
-*  Retour      : -                                                            *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-void mcb_open_recent_project(GtkMenuItem *menuitem, GObject *ref)
-{
-#if 0
-    const gchar *caption;                   /* Etiquette du menu           */
-    openida_project *project;               /* Nouveau projet chargé       */
-
-    caption = gtk_label_get_text(GTK_LABEL(gtk_bin_get_child(GTK_BIN(menuitem))));
-
-    project = g_openida_project_new_from_xml(ref, caption);
-
-    if (project != NULL)
-    {
-        push_openida_project_into_recent_list(project);
-        load_recent_openida_projects_list(ref, G_CALLBACK(mcb_open_recent_project));
-
-        set_current_project(project);
-
-        /* TODO ... */
-
-    }
-#endif
-}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : menuitem = élément de menu sélectionné.                      *
-*                ref      = adresse de l'espace de référencement global.      *
-*                                                                             *
-*  Description : Réagit avec le menu "Binaire -> Sélectionner les parties...".*
-*                                                                             *
-*  Retour      : -                                                            *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-static void mcb_binary_select_parts(GtkMenuItem *menuitem, GObject *ref)
-{
-    GLoadedBinary *binary;                  /* Binaire courant à l'écran   */
-    GtkWidget *dialog;                      /* Boîte de dialogue à montrer */
-
-    binary = G_LOADED_BINARY(g_object_get_data(ref, "current_binary"));
-
-    dialog = create_sections_dialog(binary, GTK_WINDOW(ref));
-    gtk_widget_show(dialog);
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : menuitem = élément de menu sélectionné.                      *
-*                ref      = adresse de l'espace de référencement global.      *
-*                                                                             *
-*  Description : Réagit avec le menu "Binaire -> Sélectionner les greffons..."*
-*                                                                             *
-*  Retour      : -                                                            *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-static void mcb_binary_select_plugins(GtkMenuItem *menuitem, GObject *ref)
-{
-    GLoadedBinary *binary;                  /* Binaire courant à l'écran   */
-    GtkWidget *dialog;                      /* Boîte de dialogue à montrer */
-
-    binary = G_LOADED_BINARY(g_object_get_data(ref, "current_binary"));
-
-    dialog = create_plugins_selection_dialog(binary, GTK_WINDOW(ref));
-    gtk_widget_show(dialog);
-
-}
-
-
-
-
-
-void debugger_stopped_cb(GBinaryDebugger *debugger, uint64_t last, uint64_t cur, gpointer data)
-{
-#if 0
-    GObject *ref;
-
-    GLoadedBinary *binary;
-    GRenderingLine *line;
-
-
-    GtkWidget *submenuitem;                 /* Menu à rendre accessible    */
-
-    register_value *values;
-    size_t count;
-
-
-    ref = G_OBJECT(data);
-
-
-    binary = g_object_get_data(ref, "current_binary");
-
-
-    if (last != cur)
-    {
-        line = g_rendering_line_find_by_address(g_loaded_binary_get_lines(binary), NULL/* FIXME */, last);
-
-        if (line != NULL)
-            g_rendering_line_remove_flag(line, RLF_RUNNING_BP);
-
-    }
-
-
-    printf("bp at 0x%016llx\n", cur);
-
-    line = g_rendering_line_find_by_address(g_loaded_binary_get_lines(binary), NULL/* FIXME */, cur);
-
-    if (line != NULL)
-        g_rendering_line_add_flag(line, RLF_RUNNING_BP);
-    else
-        printf("no line at address !\n");
-
-
-    values = g_binary_debugger_get_registers(debugger, &count);
-
-
-
-
-
-    /* Mises à jour */
-
-    update_debug_menu_items(ref, TRUE);
-
-
-
-
-
-
-
-    refresh_registers_panel_with_registers(get_panel(PNT_REGISTERS), values, count);
-
-#endif
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : menuitem = élément de menu ayant basculé.                    *
-*                data     = adresse de l'espace de référencement global.      *
-*                                                                             *
-*  Description : Réagit avec le menu "Débogage -> Démarrer".                  *
-*                                                                             *
-*  Retour      : -                                                            *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-void mcb_debug_start(GtkCheckMenuItem *menuitem, gpointer data)
-{
-    GLoadedBinary *binary;                  /* Binaire à analyser          */
-    GBinaryDebugger *debugger;              /* Débogueur offrant l'analyse */
-
-
-    binary = g_object_get_data(G_OBJECT(data), "current_binary");
-
-
-
-    debugger = g_new_binary_debugger(DGT_JDWP, binary);
-    g_object_set_data(G_OBJECT(data), "current_debugger", debugger);
-
-    //
-    g_binary_debugger_attach(debugger);
-
-    g_signal_connect(debugger, "debugger-stopped", G_CALLBACK(debugger_stopped_cb), data);
-
-    g_signal_connect(debugger, "halted", G_CALLBACK(on_debugger_halted), data);
-
-    //    g_binary_debugger_run(debugger);
-
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : menuitem = élément de menu ayant basculé.                    *
-*                data     = adresse de l'espace de référencement global.      *
-*                                                                             *
-*  Description : Réagit avec le menu "Débogage -> Mettre en pause".           *
-*                                                                             *
-*  Retour      : -                                                            *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-void mcb_debug_pause(GtkCheckMenuItem *menuitem, gpointer data)
-{
-    GBinaryDebugger *debugger;              /* Débogueur offrant l'analyse */
-
-
-    debugger = g_object_get_data(G_OBJECT(data), "current_debugger");
-
-
-
-    //g_binary_debugger_resume(debugger);
-
-
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : menuitem = élément de menu ayant basculé.                    *
-*                data     = adresse de l'espace de référencement global.      *
-*                                                                             *
-*  Description : Réagit avec le menu "Débogage -> Reprendre".                 *
-*                                                                             *
-*  Retour      : -                                                            *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-void mcb_debug_resume(GtkCheckMenuItem *menuitem, gpointer data)
-{
-    GBinaryDebugger *debugger;              /* Débogueur offrant l'analyse */
-
-
-    debugger = g_object_get_data(G_OBJECT(data), "current_debugger");
-
-
-
-    g_binary_debugger_resume(debugger);
-
-
-
-}
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : menuitem = élément de menu ayant basculé.                    *
-*                data     = adresse de l'espace de référencement global.      *
-*                                                                             *
-*  Description : Réagit avec le menu "Débogage -> Tuer".                      *
-*                                                                             *
-*  Retour      : -                                                            *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-void mcb_debug_kill(GtkCheckMenuItem *menuitem, gpointer data)
-{
-    GBinaryDebugger *debugger;              /* Débogueur offrant l'analyse */
-
-    debugger = g_object_get_data(G_OBJECT(data), "current_debugger");
-
-    g_binary_debugger_kill(debugger);
-
-    /* TODO : retirer l'association binary <-> debugger */
-
-}
 
 
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : ref     = adresse de l'espace de référencement global.       *
-*                stopped = indique l'état d'accessibilité des menus.          *
-*                                                                             *
-*  Description : Met à jour l'accessibilité aux éléments du menu "Debogage".  *
-*                                                                             *
-*  Retour      : -                                                            *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
 
-void update_debug_menu_items(GObject *ref, gboolean stopped)
-{
-    GtkWidget *submenuitem;                 /* Menu à rendre accessible    */
 
-    submenuitem = GTK_WIDGET(g_object_get_data(ref, "mnu_debug_pause"));
-    gtk_widget_set_sensitive(submenuitem, stopped);
 
-    submenuitem = GTK_WIDGET(g_object_get_data(ref, "mnu_debug_resume"));
-    gtk_widget_set_sensitive(submenuitem, stopped);
 
-    submenuitem = GTK_WIDGET(g_object_get_data(ref, "mnu_debug_into"));
-    gtk_widget_set_sensitive(submenuitem, stopped);
 
-    submenuitem = GTK_WIDGET(g_object_get_data(ref, "mnu_debug_over"));
-    gtk_widget_set_sensitive(submenuitem, stopped);
 
-    submenuitem = GTK_WIDGET(g_object_get_data(ref, "mnu_debug_ret"));
-    gtk_widget_set_sensitive(submenuitem, stopped);
 
-}
 
 
 
@@ -998,45 +388,6 @@ static void on_dock_item_switch(GtkDockStation *station, GtkWidget *widget, GObj
 
 
 
-/* ---------------------------------------------------------------------------------- */
-/*                           PARTIE DEDIEE AU MODE DEBOGAGE                           */
-/* ---------------------------------------------------------------------------------- */
-
-
-/******************************************************************************
-*                                                                             *
-*  Paramètres  : debugger = débogueur intervenant dans l'action.              *
-*                sig      = identifiant du signal source (nul si indéterminé).*
-*                addr     = adresse de l'instruction courante.                *
-*                thread   = identifiant du thread concerné.                   *
-*                ref      = espace de référencement global.                   *
-*                                                                             *
-*  Description : Prend note d'une pause dans le débogage.                     *
-*                                                                             *
-*  Retour      : -                                                            *
-*                                                                             *
-*  Remarques   : -                                                            *
-*                                                                             *
-******************************************************************************/
-
-static void on_debugger_halted(GBinaryDebugger *debugger, int sig, vmpa_t addr, pid_t thread, GObject *ref)
-{
-
-    printf("HALT (sig=%d) at 0x%016llx\n", sig, addr);
-
-
-
-
-}
-
-
-
-
-
-
-
-
-
 
 
 /* ---------------------------------------------------------------------------------- */
diff --git a/src/gtkext/gtkviewpanel.c b/src/gtkext/gtkviewpanel.c
index 3c9ef6b..a3bf747 100644
--- a/src/gtkext/gtkviewpanel.c
+++ b/src/gtkext/gtkviewpanel.c
@@ -125,14 +125,23 @@ static void gtk_view_panel_init(GtkViewPanel *panel)
 
 static void gtk_view_panel_set_scroll_adjustments(GtkViewPanel *panel, GtkAdjustment *hadjustment, GtkAdjustment *vadjustment)
 {
+    /* TODO : déconnecter les anciens ? */
+
     panel->hadjustment = hadjustment;
     panel->vadjustment = vadjustment;
 
-    g_signal_connect(hadjustment, "value_changed",
-                     G_CALLBACK(gtk_view_panel_adj_value_changed), panel);
+    /**
+     * On vérifie que le support n'est pas en train de nous libérer,
+     * avant de se connecter...
+     */
+
+    if (hadjustment != NULL)
+        g_signal_connect(hadjustment, "value_changed",
+                         G_CALLBACK(gtk_view_panel_adj_value_changed), panel);
 
-    g_signal_connect(vadjustment, "value_changed",
-                     G_CALLBACK(gtk_view_panel_adj_value_changed), panel);
+    if (vadjustment != NULL)
+        g_signal_connect(vadjustment, "value_changed",
+                         G_CALLBACK(gtk_view_panel_adj_value_changed), panel);
 
 }
 
-- 
cgit v0.11.2-87-g4458