diff options
Diffstat (limited to 'plugins/fmtp')
-rw-r--r-- | plugins/fmtp/parser.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/plugins/fmtp/parser.c b/plugins/fmtp/parser.c index 96aeb11..fe41e9b 100644 --- a/plugins/fmtp/parser.c +++ b/plugins/fmtp/parser.c @@ -55,10 +55,10 @@ static bool parse_field_definition(const fmt_field_def *, GBinFormat *, GPreload static bool parse_field_definition(const fmt_field_def *def, GBinFormat *format, GPreloadInfo *info, vmpa2t *pos, void *data) { + bool result; /* Bilan à retourner */ GBinContent *content; /* Contenu binaire à lire */ SourceEndian endian; /* Boutisme utilisé */ vmpa2t mod; /* Position modifiable */ - bool result; /* Bilan à retourner */ GArchInstruction *instr; /* Instruction décodée */ GImmOperand *imm; /* Opérande à transformer */ size_t i; /* Boucle de parcours */ @@ -66,6 +66,7 @@ static bool parse_field_definition(const fmt_field_def *def, GBinFormat *format, GDbComment *comment; /* Définition de commentaire */ uint64_t raw; /* Valeur brute à étudier */ const comment_part *part; /* Accès plus direct */ + bool inserted; /* Bilan d'une insertion */ /* Lecture */ @@ -192,9 +193,13 @@ static bool parse_field_definition(const fmt_field_def *def, GBinFormat *format, /* Insertions */ - g_preload_info_add_instruction(info, instr); + inserted = g_preload_info_add_instruction(info, instr); - g_preload_info_add_comment(info, comment); + if (inserted) + g_preload_info_add_comment(info, comment); + + else + g_object_unref(G_OBJECT(comment)); pfd_exit: |