From e1a0dcb2d65248187f8f01689c99c15cbda4bfa5 Mon Sep 17 00:00:00 2001 From: Cyrille Bagard Date: Tue, 10 Mar 2015 02:38:53 +0000 Subject: Fixed a bug when tracking cross references from a line with an empty size. git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@485 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a --- ChangeLog | 5 +++++ src/gui/menus/edition.c | 14 +++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index c9fa354..afcedc4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +15-03-10 Cyrille Bagard + + * src/gui/menus/edition.c: + Fix a bug when tracking cross references from a line with an empty size. + 15-03-08 Cyrille Bagard * src/dialogs/gotox.c: diff --git a/src/gui/menus/edition.c b/src/gui/menus/edition.c index 3c1d6ac..c242a00 100644 --- a/src/gui/menus/edition.c +++ b/src/gui/menus/edition.c @@ -257,7 +257,19 @@ static void mcb_edition_list_xrefs(GtkMenuItem *menuitem, GMenuBar *bar) binary = g_editor_item_get_current_binary(G_EDITOR_ITEM(bar)); list = g_loaded_binary_get_instructions(binary); - instr = g_arch_instruction_find_by_range(list, range); + /** + * On ne peut pas se reposer sur l'espace couvert par une ligne, car il peut + * être de taille nulle (cas d'une étiquette, par exemple), à la différence + * de la taille d'une instruction. + * + * Il n'est donc pas judicieux de rechercher cette instruction avec + * un appel de type : + * + * instr = g_arch_instruction_find_by_range(list, range); + * + * Il faut ainsi être plus souple. + */ + instr = g_arch_instruction_find_by_address(list, get_mrange_addr(range), true); ref = g_editor_item_get_global_ref(G_EDITOR_ITEM(bar)); -- cgit v0.11.2-87-g4458