diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | src/analysis/disass/output.c | 14 |
2 files changed, 18 insertions, 1 deletions
@@ -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; |