From dac61a1c5fdb5e3630dc0907a5e0e1a22789de9d Mon Sep 17 00:00:00 2001 From: Cyrille Bagard 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 + + * src/analysis/disass/output.c: + Ensure all block closing marks have an existing address. + 17-01-15 Cyrille Bagard * 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