From de379f531ad5fa356b33287196f884550abd2af4 Mon Sep 17 00:00:00 2001
From: Cyrille Bagard <nocbos@gmail.com>
Date: Thu, 9 Aug 2018 01:05:12 +0200
Subject: Updated some object destruction processes.

---
 src/analysis/block.c               |  5 ++---
 src/analysis/disass/area.c         |  9 +++------
 src/analysis/disass/block.c        |  6 +++---
 src/analysis/disass/fetch.c        |  7 +++----
 src/analysis/disass/instructions.c |  9 +++++++++
 src/analysis/disass/routines.c     | 12 +++++++-----
 src/gtkext/gtkbufferdisplay.c      |  2 ++
 src/gtkext/gtkdisplaypanel.c       |  5 +++++
 8 files changed, 34 insertions(+), 21 deletions(-)

diff --git a/src/analysis/block.c b/src/analysis/block.c
index 14b2c0e..8c80177 100644
--- a/src/analysis/block.c
+++ b/src/analysis/block.c
@@ -174,8 +174,7 @@ static void g_code_block_dispose(GCodeBlock *block)
     g_code_block_unlock_dest(block);
 #endif
 
-    if (block->view != NULL)
-        g_object_unref(G_OBJECT(block->view));
+    g_clear_object(&block->view);
 
     G_OBJECT_CLASS(g_code_block_parent_class)->dispose(G_OBJECT(block));
 
@@ -759,7 +758,7 @@ static void g_block_list_dispose(GBlockList *list)
         if (list->blocks[i] != NULL)
         {
             g_code_block_delete_all_links(list->blocks[i]);
-            g_object_unref(G_OBJECT(list->blocks[i]));
+            g_clear_object(&list->blocks[i]);
         }
 
     G_OBJECT_CLASS(g_block_list_parent_class)->dispose(G_OBJECT(list));
diff --git a/src/analysis/disass/area.c b/src/analysis/disass/area.c
index 65024b2..2dca001 100644
--- a/src/analysis/disass/area.c
+++ b/src/analysis/disass/area.c
@@ -1610,16 +1610,13 @@ static void g_area_collector_init(GAreaCollector *collector)
 static void g_area_collector_dispose(GAreaCollector *collector)
 {
     if (collector->run == (run_task_fc)g_area_collector_do_compute)
-        g_object_unref(G_OBJECT(collector->binary));
+        g_clear_object(&collector->binary);
 
     else if (collector->run == (run_task_fc)g_area_collector_do_insert)
-        g_object_unref(G_OBJECT(collector->info));
+        g_clear_object(&collector->info);
 
     else if (collector->run == (run_task_fc)g_area_collector_do_fill)
-    {
-        if (collector->ctx != NULL)
-            g_object_unref(G_OBJECT(collector->ctx));
-    }
+            g_clear_object(&collector->ctx);
 
     G_OBJECT_CLASS(g_area_collector_parent_class)->dispose(G_OBJECT(collector));
 
diff --git a/src/analysis/disass/block.c b/src/analysis/disass/block.c
index 5c97358..b22c547 100644
--- a/src/analysis/disass/block.c
+++ b/src/analysis/disass/block.c
@@ -150,10 +150,10 @@ static void g_basic_block_init(GBasicBlock *block)
 
 static void g_basic_block_dispose(GBasicBlock *block)
 {
-    g_object_unref(G_OBJECT(block->binary));
+    g_clear_object(&block->binary);
 
-    g_object_unref(G_OBJECT(block->first));
-    g_object_unref(G_OBJECT(block->last));
+    g_clear_object(&block->first);
+    g_clear_object(&block->last);
 
     G_OBJECT_CLASS(g_basic_block_parent_class)->dispose(G_OBJECT(block));
 
diff --git a/src/analysis/disass/fetch.c b/src/analysis/disass/fetch.c
index f179860..ae7dbdc 100644
--- a/src/analysis/disass/fetch.c
+++ b/src/analysis/disass/fetch.c
@@ -181,12 +181,11 @@ static void g_delayed_fetching_init(GDelayedFetching *fetching)
 
 static void g_delayed_fetching_dispose(GDelayedFetching *fetching)
 {
-    g_object_unref(G_OBJECT(fetching->format));
+    g_clear_object(&fetching->format);
 
-    g_object_unref(G_OBJECT(fetching->ctx));
+    g_clear_object(&fetching->ctx);
 
-    if (fetching->status != NULL)
-        g_object_unref(G_OBJECT(fetching->status));
+    g_clear_object(&fetching->status);
 
     G_OBJECT_CLASS(g_delayed_fetching_parent_class)->dispose(G_OBJECT(fetching));
 
diff --git a/src/analysis/disass/instructions.c b/src/analysis/disass/instructions.c
index 78b20d4..2dd39c5 100644
--- a/src/analysis/disass/instructions.c
+++ b/src/analysis/disass/instructions.c
@@ -139,6 +139,10 @@ static void g_instructions_study_init(GInstructionsStudy *study)
 
 static void g_instructions_study_dispose(GInstructionsStudy *study)
 {
+    g_clear_object(&study->proc);
+    g_clear_object(&study->ctx);
+    g_clear_object(&study->format);
+
     G_OBJECT_CLASS(g_instructions_study_parent_class)->dispose(G_OBJECT(study));
 
 }
@@ -188,8 +192,13 @@ GInstructionsStudy *g_instructions_study_new(GArchProcessor *proc, GProcContext
     result = g_object_new(G_TYPE_INSTRUCTIONS_STUDY, NULL);
 
     result->proc = proc;
+    g_object_ref(G_OBJECT(proc));
+
     result->ctx = ctx;
+    g_object_ref(G_OBJECT(ctx));
+
     result->format = format;
+    g_object_ref(G_OBJECT(format));
 
     result->fallback = fallback;
     result->begin = begin;
diff --git a/src/analysis/disass/routines.c b/src/analysis/disass/routines.c
index 4e65b77..c57b80c 100644
--- a/src/analysis/disass/routines.c
+++ b/src/analysis/disass/routines.c
@@ -150,14 +150,16 @@ static void g_routines_study_init(GRoutinesStudy *study)
 
 static void g_routines_study_dispose(GRoutinesStudy *study)
 {
-    g_object_unref(G_OBJECT(study->portions));
+    g_clear_object(&study->binary);
 
-    g_binary_format_unlock_symbols_rd(study->format);
+    g_clear_object(&study->proc);
 
-    g_object_unref(G_OBJECT(study->format));
-    g_object_unref(G_OBJECT(study->proc));
+    if (study->format != NULL)
+        g_binary_format_unlock_symbols_rd(study->format);
 
-    g_object_unref(G_OBJECT(study->binary));
+    g_clear_object(&study->format);
+
+    g_clear_object(&study->portions);
 
     G_OBJECT_CLASS(g_routines_study_parent_class)->dispose(G_OBJECT(study));
 
diff --git a/src/gtkext/gtkbufferdisplay.c b/src/gtkext/gtkbufferdisplay.c
index f41c4e3..60b1f40 100644
--- a/src/gtkext/gtkbufferdisplay.c
+++ b/src/gtkext/gtkbufferdisplay.c
@@ -207,6 +207,8 @@ static void gtk_buffer_display_dispose(GtkBufferDisplay *display)
 {
     g_clear_object(&display->view);
 
+    g_clear_object(&display->cursor);
+
     G_OBJECT_CLASS(gtk_buffer_display_parent_class)->dispose(G_OBJECT(display));
 
 }
diff --git a/src/gtkext/gtkdisplaypanel.c b/src/gtkext/gtkdisplaypanel.c
index 4b21d8c..3623ced 100644
--- a/src/gtkext/gtkdisplaypanel.c
+++ b/src/gtkext/gtkdisplaypanel.c
@@ -231,8 +231,13 @@ static void gtk_display_panel_loaded_interface_init(GLoadedPanelInterface *iface
 
 static void gtk_display_panel_dispose(GtkDisplayPanel *panel)
 {
+    g_clear_object(&panel->hadjustment);
+    g_clear_object(&panel->vadjustment);
+
     g_clear_object(&panel->options);
 
+    g_clear_object(&panel->binary);
+
     G_OBJECT_CLASS(gtk_display_panel_parent_class)->dispose(G_OBJECT(panel));
 
 }
-- 
cgit v0.11.2-87-g4458