summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2015-03-10 02:38:53 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2015-03-10 02:38:53 (GMT)
commite1a0dcb2d65248187f8f01689c99c15cbda4bfa5 (patch)
tree5ffd46c1a9f959d0b069684f04928477ab19c270
parente4b34b17cdf73cdd847acbd3400bc85a8ab0452e (diff)
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
-rw-r--r--ChangeLog5
-rw-r--r--src/gui/menus/edition.c14
2 files changed, 18 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index c9fa354..afcedc4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+15-03-10 Cyrille Bagard <nocbos@gmail.com>
+
+ * src/gui/menus/edition.c:
+ Fix a bug when tracking cross references from a line with an empty size.
+
15-03-08 Cyrille Bagard <nocbos@gmail.com>
* 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));