summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--src/analysis/disass/output.c14
2 files changed, 18 insertions, 1 deletions
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;