summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2018-07-14 12:41:30 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2018-07-14 12:41:30 (GMT)
commit078b2ffd38da040ab87a9686bcc2e796841cccb7 (patch)
tree2e5c94065cb5b4d38fac700e10104a0da7ae970d /src
parent736b616092f91fc0863a82851620ec2e095212cb (diff)
Replaced all the remaining concrete locations in internal rendering buffers.
Diffstat (limited to 'src')
-rw-r--r--src/analysis/db/items/comment.c19
-rw-r--r--src/analysis/routine.c16
-rw-r--r--src/arch/target.c9
-rw-r--r--src/glibext/gbuffercache.c69
-rw-r--r--src/glibext/gbuffercache.h6
-rw-r--r--src/glibext/gbufferview.c49
-rw-r--r--src/glibext/gbufferview.h6
-rw-r--r--src/gtkext/graph/cluster.c14
-rw-r--r--src/gtkext/gtkbufferdisplay.c12
-rw-r--r--src/gtkext/gtkgraphdisplay.c3
-rw-r--r--src/gui/dialogs/gotox.c9
11 files changed, 133 insertions, 79 deletions
diff --git a/src/analysis/db/items/comment.c b/src/analysis/db/items/comment.c
index 394abe2..57bb017 100644
--- a/src/analysis/db/items/comment.c
+++ b/src/analysis/db/items/comment.c
@@ -628,6 +628,7 @@ static bool g_db_comment_run(GDbComment *comment, GLoadedBinary *binary, bool ap
{
bool result; /* Bilan à faire remonter */
GBufferCache *cache; /* Ensemble de lignes à traiter*/
+ GLineCursor *cursor; /* Emplacement dans un tampon */
size_t index; /* Point d'insertion */
GArchProcessor *proc; /* Propriétaire d'instructions */
GArchInstruction *instr; /* Instruction à traiter */
@@ -641,7 +642,12 @@ static bool g_db_comment_run(GDbComment *comment, GLoadedBinary *binary, bool ap
cache = g_loaded_binary_get_disassembled_cache(binary);
- index = g_buffer_cache_find_index_by_addr(cache, &comment->addr, true);
+ cursor = g_binary_cursor_new();
+ g_binary_cursor_update(G_BINARY_CURSOR(cursor), &comment->addr);
+
+ index = g_buffer_cache_find_index_by_cursor(cache, cursor, true);
+
+ g_object_unref(G_OBJECT(cursor));
index = g_buffer_cache_look_for_flag(cache, index, BLF_HAS_CODE);
@@ -696,15 +702,20 @@ static bool g_db_comment_run(GDbComment *comment, GLoadedBinary *binary, bool ap
range = g_arch_instruction_get_range(source->linked);
+ cursor = g_binary_cursor_new();
+ g_binary_cursor_update(G_BINARY_CURSOR(cursor), get_mrange_addr(range));
+
+ linked = g_buffer_cache_find_index_by_cursor(cache, cursor, true);
+ assert(linked != g_buffer_cache_count_lines(cache));
+
+ g_object_unref(G_OBJECT(cursor));
+
/**
* On recherche ici une ligne potentiellement BLF_HAS_CODE ou BLF_IS_LABEL.
* Comme on ne peut pas traiter les deux cas, on prend la première qui vient
* avec BLF_NONE.
*/
- linked = g_buffer_cache_find_index_by_addr(cache, get_mrange_addr(range), true);
- assert(linked != g_buffer_cache_count_lines(cache));
-
linked = g_buffer_cache_look_for_flag(cache, linked, BLF_HAS_CODE | BLF_IS_LABEL);
RUN_INLINED_COMMENT(linked, comment, comment->old_inlined[i]);
diff --git a/src/analysis/routine.c b/src/analysis/routine.c
index 19782c7..cc1e337 100644
--- a/src/analysis/routine.c
+++ b/src/analysis/routine.c
@@ -38,6 +38,7 @@
#include "../common/extstr.h"
#include "../core/params.h"
#include "../format/symbol-int.h"
+#include "../glibext/gbinarycursor.h"
@@ -1011,6 +1012,7 @@ char *g_binary_routine_build_tooltip(const GBinRoutine *routine, const GLoadedBi
size_t i; /* Boucle de parcours */
instr_link_t *dest; /* Instr. visée par une autre */
const mrange_t *irange; /* Emplacement d'instruction */
+ GLineCursor *cursor; /* Emplacement dans un tampon */
size_t index; /* Indice de ligne à traiter */
GBufferLine *line; /* Ligne présente à l'adresse */
char *info; /* Ligne d'information créée */
@@ -1082,7 +1084,12 @@ char *g_binary_routine_build_tooltip(const GBinRoutine *routine, const GLoadedBi
irange = g_arch_instruction_get_range(instr);
- index = g_buffer_cache_find_index_by_addr(cache, get_mrange_addr(irange), true);
+ cursor = g_binary_cursor_new();
+ g_binary_cursor_update(G_BINARY_CURSOR(cursor), get_mrange_addr(irange));
+
+ index = g_buffer_cache_find_index_by_cursor(cache, cursor, true);
+
+ g_object_unref(G_OBJECT(cursor));
index = g_buffer_cache_look_for_flag(cache, index, BLF_HAS_CODE);
@@ -1133,7 +1140,12 @@ char *g_binary_routine_build_tooltip(const GBinRoutine *routine, const GLoadedBi
irange = g_arch_instruction_get_range(dest->linked);
- index = g_buffer_cache_find_index_by_addr(cache, get_mrange_addr(irange), true);
+ cursor = g_binary_cursor_new();
+ g_binary_cursor_update(G_BINARY_CURSOR(cursor), get_mrange_addr(irange));
+
+ index = g_buffer_cache_find_index_by_cursor(cache, cursor, true);
+
+ g_object_unref(G_OBJECT(cursor));
index = g_buffer_cache_look_for_flag(cache, index, BLF_HAS_CODE);
diff --git a/src/arch/target.c b/src/arch/target.c
index 036aad0..97b2192 100644
--- a/src/arch/target.c
+++ b/src/arch/target.c
@@ -36,6 +36,7 @@
#include "../analysis/routine.h"
#include "../common/extstr.h"
#include "../format/format.h"
+#include "../glibext/gbinarycursor.h"
@@ -373,6 +374,7 @@ static char *g_target_operand_build_tooltip(const GTargetOperand *operand, const
SymbolType stype; /* Type de symbole identifié */
const mrange_t *srange; /* Emplacement du symbole */
GBufferCache *cache; /* Tampon de désassemblage */
+ GLineCursor *cursor; /* Emplacement dans un tampon */
size_t index; /* Indice de ligne à traiter */
GBufferLine *line; /* Ligne présente à l'adresse */
@@ -396,7 +398,12 @@ static char *g_target_operand_build_tooltip(const GTargetOperand *operand, const
cache = g_loaded_binary_get_disassembled_cache(binary);
- index = g_buffer_cache_find_index_by_addr(cache, get_mrange_addr(srange), true);
+ cursor = g_binary_cursor_new();
+ g_binary_cursor_update(G_BINARY_CURSOR(cursor), get_mrange_addr(srange));
+
+ index = g_buffer_cache_find_index_by_cursor(cache, cursor, true);
+
+ g_object_unref(G_OBJECT(cursor));
index = g_buffer_cache_look_for_flag(cache, index, BLF_HAS_CODE);
diff --git a/src/glibext/gbuffercache.c b/src/glibext/gbuffercache.c
index a64ec68..91f3a6d 100644
--- a/src/glibext/gbuffercache.c
+++ b/src/glibext/gbuffercache.c
@@ -29,7 +29,6 @@
#include <stdlib.h>
-#include "gbinarycursor.h" // REMME
#include "chrysamarshal.h"
@@ -1479,11 +1478,11 @@ void g_buffer_cache_draw(const GBufferCache *cache, cairo_t *cr, size_t first, s
/******************************************************************************
* *
-* Paramètres : cache = tampon de lignes à consulter. *
-* addr = adresse à retrouver dans le tampon. *
-* first = indique si on l'arrête à la première ou la dernière. *
-* start = borne inférieure des recherches (incluse). *
-* end = borne supérieure des recherches (incluse). *
+* Paramètres : cache = tampon de lignes à consulter. *
+* cursor = emplacement à retrouver dans le tampon. *
+* first = indique si on l'arrête à la première ou la dernière.*
+* start = borne inférieure des recherches (incluse). *
+* end = borne supérieure des recherches (incluse). *
* *
* Description : Indique l'indice correspondant à une adresse donnée. *
* *
@@ -1493,10 +1492,9 @@ void g_buffer_cache_draw(const GBufferCache *cache, cairo_t *cr, size_t first, s
* *
******************************************************************************/
-size_t _g_buffer_cache_find_index_by_addr(const GBufferCache *cache, const vmpa2t *addr, bool first, size_t start, size_t end)
+size_t _g_buffer_cache_find_index_by_cursor(const GBufferCache *cache, const GLineCursor *cursor, bool first, size_t start, size_t end)
{
size_t result; /* Indice à retourner */
- GLineCursor *___tmp;
cache_info *found; /* Eventuel élément trouvé */
int find_containing_generator(const GLineCursor *c, const cache_info *i)
@@ -1513,12 +1511,7 @@ size_t _g_buffer_cache_find_index_by_addr(const GBufferCache *cache, const vmpa2
}
-
- ___tmp = g_binary_cursor_new();
- g_binary_cursor_update(G_BINARY_CURSOR(___tmp), addr);
-
-
- found = (cache_info *)bsearch(___tmp, &cache->lines[start], end - start + 1,
+ found = (cache_info *)bsearch(cursor, &cache->lines[start], end - start + 1,
sizeof(cache_info), (__compar_fn_t)find_containing_generator);
if (found == NULL)
@@ -1536,7 +1529,7 @@ size_t _g_buffer_cache_find_index_by_addr(const GBufferCache *cache, const vmpa2
{
found = &cache->lines[result - 1];
- if (find_containing_generator(___tmp, found) != 0)
+ if (find_containing_generator(cursor, found) != 0)
break;
}
@@ -1546,17 +1539,13 @@ size_t _g_buffer_cache_find_index_by_addr(const GBufferCache *cache, const vmpa2
{
found = &cache->lines[result + 1];
- if (find_containing_generator(___tmp, found) != 0)
+ if (find_containing_generator(cursor, found) != 0)
break;
}
}
-
- g_object_unref(G_OBJECT(___tmp));
-
-
return result;
}
@@ -1564,9 +1553,9 @@ size_t _g_buffer_cache_find_index_by_addr(const GBufferCache *cache, const vmpa2
/******************************************************************************
* *
-* Paramètres : cache = tampon de lignes à consulter. *
-* addr = adresse à retrouver dans le tampon. *
-* first = indique si on l'arrête à la première ou la dernière. *
+* Paramètres : cache = tampon de lignes à consulter. *
+* cursor = emplacement à retrouver dans le tampon. *
+* first = indique si on l'arrête à la première ou la dernière.*
* *
* Description : Indique l'indice correspondant à une adresse donnée. *
* *
@@ -1576,14 +1565,14 @@ size_t _g_buffer_cache_find_index_by_addr(const GBufferCache *cache, const vmpa2
* *
******************************************************************************/
-size_t g_buffer_cache_find_index_by_addr(const GBufferCache *cache, const vmpa2t *addr, bool first)
+size_t g_buffer_cache_find_index_by_cursor(const GBufferCache *cache, const GLineCursor *cursor, bool first)
{
size_t result; /* Indice à retourner */
if (cache->used == 0)
result = 0;
else
- result = _g_buffer_cache_find_index_by_addr(cache, addr, first, 0, cache->used - 1);
+ result = _g_buffer_cache_find_index_by_cursor(cache, cursor, first, 0, cache->used - 1);
return result;
@@ -1646,13 +1635,13 @@ size_t g_buffer_cache_look_for_flag(const GBufferCache *cache, size_t start, Buf
/******************************************************************************
* *
-* Paramètres : cache = tampon de lignes à consulter. *
-* addr = adresse à présenter à l'écran. *
-* first = borne inférieure des recherches (incluse). *
-* last = borne supérieure des recherches (incluse). *
-* code = s'arrête si possible à une ligne avec code. *
-* x = position horizontale au sein du composant. [OUT] *
-* y = position verticale au sein du composant. [OUT] *
+* Paramètres : cache = tampon de lignes à consulter. *
+* cursor = emplacement à présenter à l'écran. *
+* first = borne inférieure des recherches (incluse). *
+* last = borne supérieure des recherches (incluse). *
+* code = s'arrête si possible à une ligne avec code. *
+* x = position horizontale au sein du composant. [OUT] *
+* y = position verticale au sein du composant. [OUT] *
* *
* Description : Indique la position d'affichage d'une adresse donnée. *
* *
@@ -1662,21 +1651,15 @@ size_t g_buffer_cache_look_for_flag(const GBufferCache *cache, size_t start, Buf
* *
******************************************************************************/
-bool g_buffer_cache_get_address_coordinates(const GBufferCache *cache, const vmpa2t *addr, size_t first, size_t last, bool code, gint *x, gint *y)
+bool g_buffer_cache_get_cursor_coordinates(const GBufferCache *cache, const GLineCursor *cursor, size_t first, size_t last, bool code, gint *x, gint *y)
{
bool result; /* Bilan à retourner */
- GLineCursor *___tmp;
size_t index; /* Indice de correspondance */
gint lheight; /* Hauteur d'une ligne */
const cache_info *info; /* Infos sur une ligne donnée */
const generator_link *generator; /* Générateur retenu */
-
- ___tmp = g_binary_cursor_new();
- g_binary_cursor_update(G_BINARY_CURSOR(___tmp), addr);
-
-
- index = _g_buffer_cache_find_index_by_addr(cache, addr, true, first, last);
+ index = _g_buffer_cache_find_index_by_cursor(cache, cursor, true, first, last);
result = (index < cache->used);
@@ -1702,7 +1685,7 @@ bool g_buffer_cache_get_address_coordinates(const GBufferCache *cache, const vmp
else
generator = &info->generators[0];
- if (!g_line_generator_contains_cursor(generator->instance, index + 1, generator->repeat, ___tmp))
+ if (!g_line_generator_contains_cursor(generator->instance, index + 1, generator->repeat, cursor))
break;
*y += lheight;
@@ -1711,10 +1694,6 @@ bool g_buffer_cache_get_address_coordinates(const GBufferCache *cache, const vmp
}
-
- g_object_unref(G_OBJECT(___tmp));
-
-
return result;
}
diff --git a/src/glibext/gbuffercache.h b/src/glibext/gbuffercache.h
index fdf59d7..453588e 100644
--- a/src/glibext/gbuffercache.h
+++ b/src/glibext/gbuffercache.h
@@ -105,16 +105,16 @@ void g_buffer_cache_collect_widths(GBufferCache *, size_t, line_width_summary *)
void g_buffer_cache_draw(const GBufferCache *, cairo_t *, size_t, size_t, const cairo_rectangle_int_t *, const bool *, const gint *, const segcnt_list *);
/* Indique l'indice correspondant à une adresse donnée. */
-size_t _g_buffer_cache_find_index_by_addr(const GBufferCache *, const vmpa2t *, bool, size_t, size_t);
+size_t _g_buffer_cache_find_index_by_cursor(const GBufferCache *, const GLineCursor *, bool, size_t, size_t);
/* Indique l'indice correspondant à une adresse donnée. */
-size_t g_buffer_cache_find_index_by_addr(const GBufferCache *, const vmpa2t *, bool);
+size_t g_buffer_cache_find_index_by_cursor(const GBufferCache *, const GLineCursor *, bool);
/* Avance autant que possible vers une ligne idéale. */
size_t g_buffer_cache_look_for_flag(const GBufferCache *, size_t, BufferLineFlags);
/* Indique la position d'affichage d'une adresse donnée. */
-bool g_buffer_cache_get_address_coordinates(const GBufferCache *, const vmpa2t *, size_t, size_t, bool, gint *, gint *);
+bool g_buffer_cache_get_cursor_coordinates(const GBufferCache *, const GLineCursor *, size_t, size_t, bool, gint *, gint *);
diff --git a/src/glibext/gbufferview.c b/src/glibext/gbufferview.c
index 0eff4d8..c5bd81e 100644
--- a/src/glibext/gbufferview.c
+++ b/src/glibext/gbufferview.c
@@ -39,8 +39,8 @@ struct _GBufferView
bool external; /* Note l'origine de la liste */
bool unrestricted; /* Validité des informations */
- vmpa2t start; /* Première ligne intégrée */
- vmpa2t end; /* Dernière ligne intégrée */
+ GLineCursor *start; /* Première ligne intégrée */
+ GLineCursor *end; /* Dernière ligne intégrée */
size_t first; /* Indice de la première ligne */
size_t last; /* Indice de la dernière ligne */
@@ -391,7 +391,7 @@ GBufferCache *g_buffer_view_get_cache(const GBufferView *view)
* *
******************************************************************************/
-void g_buffer_view_restrict(GBufferView *view, const vmpa2t *start, const vmpa2t *end)
+void g_buffer_view_restrict(GBufferView *view, GLineCursor *start, GLineCursor *end)
{
bool state; /* Nouvel état à proclamer */
GWidthTracker *template; /* Suivi déjà en place */
@@ -419,11 +419,11 @@ void g_buffer_view_restrict(GBufferView *view, const vmpa2t *start, const vmpa2t
else
{
- copy_vmpa(&view->start, start);
- copy_vmpa(&view->end, end);
+ view->start = start;
+ view->end = end;
- view->first = g_buffer_cache_find_index_by_addr(view->cache, start, true);
- view->last = g_buffer_cache_find_index_by_addr(view->cache, end, false);
+ view->first = g_buffer_cache_find_index_by_cursor(view->cache, start, true);
+ view->last = g_buffer_cache_find_index_by_cursor(view->cache, end, false);
view->tracker = g_width_tracker_new_restricted(template, view->first, view->last);
@@ -450,12 +450,27 @@ void g_buffer_view_restrict(GBufferView *view, const vmpa2t *start, const vmpa2t
* *
******************************************************************************/
-bool g_buffer_view_get_restrictions(const GBufferView *view, vmpa2t *start, vmpa2t *end)
+bool g_buffer_view_get_restrictions(const GBufferView *view, GLineCursor **start, GLineCursor **end)
{
if (!view->unrestricted)
{
- if (start != NULL) copy_vmpa(start, &view->start);
- if (end != NULL) copy_vmpa(end, &view->end);
+ if (start != NULL)
+ {
+ *start = view->start;
+ g_object_ref(G_OBJECT(*start));
+ }
+
+ if (end != NULL)
+ {
+ *end = view->end;
+ g_object_ref(G_OBJECT(*end));
+ }
+
+ }
+ else
+ {
+ if (start != NULL) *start = NULL;
+ if (end != NULL) *end = NULL;
}
return !view->unrestricted;
@@ -1184,11 +1199,11 @@ static GBufferLine *g_buffer_view_find_line_at(GBufferView *view, gint y, size_t
/******************************************************************************
* *
-* Paramètres : view = visualisation à consulter. *
-* addr = adresse à présenter à l'écran. *
-* code = s'arrête si possible à une ligne avec code. *
-* x = position horizontale au sein du composant. [OUT] *
-* y = position verticale au sein du composant. [OUT] *
+* Paramètres : view = visualisation à consulter. *
+* cursor = emplacement à présenter à l'écran. *
+* code = s'arrête si possible à une ligne avec code. *
+* x = position horizontale au sein du composant. [OUT] *
+* y = position verticale au sein du composant. [OUT] *
* *
* Description : Indique la position d'affichage d'une adresse donnée. *
* *
@@ -1198,11 +1213,11 @@ static GBufferLine *g_buffer_view_find_line_at(GBufferView *view, gint y, size_t
* *
******************************************************************************/
-bool g_buffer_view_get_address_coordinates(GBufferView *view, const vmpa2t *addr, bool code, gint *x, gint *y)
+bool g_buffer_view_get_cursor_coordinates(GBufferView *view, const GLineCursor *cursor, bool code, gint *x, gint *y)
{
bool result; /* Bilan à retourner */
- result = g_buffer_cache_get_address_coordinates(view->cache, addr, view->first, view->last, code, x, y);
+ result = g_buffer_cache_get_cursor_coordinates(view->cache, cursor, view->first, view->last, code, x, y);
return result;
diff --git a/src/glibext/gbufferview.h b/src/glibext/gbufferview.h
index facc3b7..6b5ef45 100644
--- a/src/glibext/gbufferview.h
+++ b/src/glibext/gbufferview.h
@@ -57,10 +57,10 @@ GBufferView *g_buffer_view_new(GBufferCache *, segcnt_list *);
GBufferCache *g_buffer_view_get_cache(const GBufferView *);
/* Restreint le champ d'application de l'affichage. */
-void g_buffer_view_restrict(GBufferView *, const vmpa2t *, const vmpa2t *);
+void g_buffer_view_restrict(GBufferView *, GLineCursor *, GLineCursor *);
/* Indique le champ d'application de l'affichage. */
-bool g_buffer_view_get_restrictions(const GBufferView *, vmpa2t *, vmpa2t *);
+bool g_buffer_view_get_restrictions(const GBufferView *, GLineCursor **, GLineCursor **);
@@ -105,7 +105,7 @@ void g_buffer_view_draw(const GBufferView *, cairo_t *, gint, const cairo_rectan
/* Indique la position d'affichage d'une adresse donnée. */
-bool g_buffer_view_get_address_coordinates(GBufferView *, const vmpa2t *, bool, gint *, gint *);
+bool g_buffer_view_get_cursor_coordinates(GBufferView *, const GLineCursor *, bool, gint *, gint *);
diff --git a/src/gtkext/graph/cluster.c b/src/gtkext/graph/cluster.c
index bf49484..57c1bfb 100644
--- a/src/gtkext/graph/cluster.c
+++ b/src/gtkext/graph/cluster.c
@@ -34,6 +34,7 @@
#include "../gtkbufferdisplay.h"
#include "../gtkdisplaypanel.h"
#include "../../common/sort.h"
+#include "../../glibext/gbinarycursor.h" // REMME
#include "../../glibext/gloadedpanel.h"
@@ -302,6 +303,8 @@ GGraphCluster *g_graph_cluster_new(GLoadedBinary *binary, const GBlockList *list
GGraphCluster *result; /* Structure à retourner */
vmpa2t first; /* Début d'un groupe de lignes */
vmpa2t last; /* Fin d'un groupe de lignes */
+ GLineCursor *___tmp_first;
+ GLineCursor *___tmp_last;
GBufferCache *cache; /* Tampon brut à découper */
GBufferView *view; /* Partie affichée du tampon */
GtkRequisition requisition; /* Taille à l'écran actuelle */
@@ -326,10 +329,19 @@ GGraphCluster *g_graph_cluster_new(GLoadedBinary *binary, const GBlockList *list
g_basic_block_get_boundary_addresses(result->block, &first, &last);
+
+ ///////////////////////
+ ___tmp_first = g_binary_cursor_new();
+ g_binary_cursor_update(G_BINARY_CURSOR(___tmp_first), &first);
+ ___tmp_last = g_binary_cursor_new();
+ g_binary_cursor_update(G_BINARY_CURSOR(___tmp_last), &last);
+ ///////////////////////
+
+
cache = g_loaded_binary_get_disassembled_cache(binary);
view = g_buffer_view_new(cache, highlighted);
- g_buffer_view_restrict(view, &first, &last);
+ g_buffer_view_restrict(view, ___tmp_first, ___tmp_last);
gtk_buffer_display_set_view(GTK_BUFFER_DISPLAY(result->display), view);
/* Détermination d'une position initiale centrée */
diff --git a/src/gtkext/gtkbufferdisplay.c b/src/gtkext/gtkbufferdisplay.c
index 3ef77b5..49167e8 100644
--- a/src/gtkext/gtkbufferdisplay.c
+++ b/src/gtkext/gtkbufferdisplay.c
@@ -678,13 +678,23 @@ static bool gtk_buffer_display_get_address_coordinates(const GtkBufferDisplay *d
bool result; /* Bilan à remonter */
bool need_code; /* Recherche plus raffinée */
GBufferCache *cache; /* Gestionnaire de lignes */
+ GLineCursor *___tmp;
int height; /* Hauteur allouée */
need_code = (tweak == SPT_BOTTOM);
cache = g_buffer_view_get_cache(display->view);
- result = g_buffer_view_get_address_coordinates(display->view, addr, need_code, x, y);
+
+ ___tmp = g_binary_cursor_new();
+ g_binary_cursor_update(G_BINARY_CURSOR(___tmp), addr);
+
+
+ result = g_buffer_view_get_cursor_coordinates(display->view, ___tmp, need_code, x, y);
+
+
+ g_object_unref(G_OBJECT(___tmp));
+
if (result)
{
diff --git a/src/gtkext/gtkgraphdisplay.c b/src/gtkext/gtkgraphdisplay.c
index ce882f9..8c8e5da 100644
--- a/src/gtkext/gtkgraphdisplay.c
+++ b/src/gtkext/gtkgraphdisplay.c
@@ -1081,6 +1081,7 @@ static void gtk_graph_display_changed_highlights(GtkBlockDisplay *node, GtkGraph
static void gtk_graph_display_reach_caret_limit(GtkBufferDisplay *node, GdkScrollDirection dir, GtkGraphDisplay *display)
{
+#if 0
GBufferView *view; /* Vue d'un tampon global */
vmpa2t first; /* Début d'un groupe de lignes */
vmpa2t last; /* Fin d'un groupe de lignes */
@@ -1258,5 +1259,5 @@ static void gtk_graph_display_reach_caret_limit(GtkBufferDisplay *node, GdkScrol
}
/* TODO : scrolling... */
-
+#endif
}
diff --git a/src/gui/dialogs/gotox.c b/src/gui/dialogs/gotox.c
index 72c2f8c..4d28e59 100644
--- a/src/gui/dialogs/gotox.c
+++ b/src/gui/dialogs/gotox.c
@@ -34,6 +34,7 @@
#include "../../core/paths.h"
#include "../../format/format.h"
#include "../../format/symiter.h"
+#include "../../glibext/gbinarycursor.h"
#include "../../gtkext/easygtk.h"
@@ -369,6 +370,7 @@ GtkWidget *create_gotox_dialog_for_cross_references(GtkWindow *parent, GLoadedBi
static void add_new_location_to_list(GtkTreeStore *store, GLoadedBinary *binary, const vmpa2t *addr, GBinSymbol *hint)
{
GBufferCache *cache; /* Tampon de désassemblage */
+ GLineCursor *cursor; /* Emplacement dans un tampon */
size_t index; /* Indice de ligne à traiter */
GBufferLine *line; /* Ligne présente à l'adresse */
char *virtual; /* Transcription d'adresse */
@@ -386,7 +388,12 @@ static void add_new_location_to_list(GtkTreeStore *store, GLoadedBinary *binary,
cache = g_loaded_binary_get_disassembled_cache(binary);
- index = g_buffer_cache_find_index_by_addr(cache, addr, true);
+ cursor = g_binary_cursor_new();
+ g_binary_cursor_update(G_BINARY_CURSOR(cursor), addr);
+
+ index = g_buffer_cache_find_index_by_cursor(cache, cursor, true);
+
+ g_object_unref(G_OBJECT(cursor));
index = g_buffer_cache_look_for_flag(cache, index, BLF_HAS_CODE);