summaryrefslogtreecommitdiff
path: root/src/analysis/disass/block.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/analysis/disass/block.c')
-rw-r--r--src/analysis/disass/block.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/analysis/disass/block.c b/src/analysis/disass/block.c
index a141d68..ea1441f 100644
--- a/src/analysis/disass/block.c
+++ b/src/analysis/disass/block.c
@@ -574,12 +574,17 @@ static char *g_basic_block_build_tooltip(const GBasicBlock *block)
if (label != NULL)
{
cache = g_buffer_cache_new(NULL, DLC_COUNT, DLC_ASSEMBLY_LABEL);
+
+ g_buffer_cache_wlock(cache);
+
g_buffer_cache_append(cache, G_LINE_GENERATOR(symbol), BLF_NONE);
line = g_buffer_cache_find_line_by_index(cache, 0);
name = g_buffer_line_get_text(line, DLC_ASSEMBLY_LABEL, DLC_COUNT, true);
g_object_unref(G_OBJECT(line));
+ g_buffer_cache_wunlock(cache);
+
g_object_unref(G_OBJECT(cache));
/* Suppression de la fin de l'étiquette... */
@@ -640,6 +645,8 @@ static char *g_basic_block_build_tooltip(const GBasicBlock *block)
proc = g_loaded_binary_get_processor(block->binary);
cache = g_loaded_binary_get_disassembly_cache(block->binary);
+ g_buffer_cache_rlock(cache);
+
iter = g_arch_processor_get_iter_from_address(proc, get_mrange_addr(&range));
if (iter == NULL) goto no_iter;
@@ -789,6 +796,8 @@ static char *g_basic_block_build_tooltip(const GBasicBlock *block)
no_iter:
+ g_buffer_cache_runlock(cache);
+
g_object_unref(G_OBJECT(cache));
g_object_unref(G_OBJECT(proc));