summaryrefslogtreecommitdiff
path: root/plugins/fmtp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/fmtp')
-rw-r--r--plugins/fmtp/parser.c11
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: