From dac61a1c5fdb5e3630dc0907a5e0e1a22789de9d Mon Sep 17 00:00:00 2001
From: Cyrille Bagard <nocbos@gmail.com>
Date: Fri, 20 Jan 2017 07:48:11 +0100
Subject: Ensured all block closing marks have an existing address.

---
 ChangeLog                    |  5 +++++
 src/analysis/disass/output.c | 14 +++++++++++++-
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/ChangeLog b/ChangeLog
index d2b3c88..005094a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+17-01-20  Cyrille Bagard <nocbos@gmail.com>
+
+	* src/analysis/disass/output.c:
+	Ensure all block closing marks have an existing address.
+
 17-01-15  Cyrille Bagard <nocbos@gmail.com>
 
 	* src/gui/menus/binary.c:
diff --git a/src/analysis/disass/output.c b/src/analysis/disass/output.c
index e20a134..a6e5f51 100644
--- a/src/analysis/disass/output.c
+++ b/src/analysis/disass/output.c
@@ -143,7 +143,7 @@ void print_disassembled_instructions(GBufferCache *cache, GCodingLanguage *lang,
         {
             expect_outro = false;
 
-            border = g_border_generator_new(lang, &outro_addr, false, msize);
+            border = g_border_generator_new(lang, iaddr, false, msize);
             g_buffer_cache_append(cache, G_LINE_GENERATOR(border), BLF_NONE);
 
         }
@@ -212,6 +212,18 @@ void print_disassembled_instructions(GBufferCache *cache, GCodingLanguage *lang,
 
                     /* Mémorisation de la fin */
 
+                    /**
+                     * On ne peut pas utiliser l'adresse obtenue dans outro_addr
+                     * comme localisation de la marque de clôture. En effet, en
+                     * fin du contenu ou de segment, l'adresse générée peut être
+                     * inexistante.
+                     *
+                     * On utilise donc l'adresse de l'instruction suivante.
+                     *
+                     * On est cependant bien conscient qu'une instruction suivante
+                     * est nécessaire pour imprimer cette marque de clôture.
+                     */
+
                     compute_mrange_end_addr(g_binary_symbol_get_range(symbols[sym_index]), &outro_addr);
 
                     expect_outro = true;
-- 
cgit v0.11.2-87-g4458