diff options
-rw-r--r-- | plugins/lnxsyscalls/writer.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/plugins/lnxsyscalls/writer.c b/plugins/lnxsyscalls/writer.c index 1263429..caa5501 100644 --- a/plugins/lnxsyscalls/writer.c +++ b/plugins/lnxsyscalls/writer.c @@ -197,25 +197,42 @@ void write_all_comments(comment_writer *writer, GPreloadInfo *preload) size_t i; /* Boucle de parcours #1 */ comment_data *target; /* Commentaire à éditer */ GDbComment *comment; /* Commentaire final à intégrer*/ + bool new; /* Nature du commentaire */ size_t k; /* Boucle de parcours #2 */ for (i = 0; i < writer->count; i++) { target = &writer->comments[i]; - comment = g_db_comment_new_inlined(&target->addr, BLF_HAS_CODE, false); - g_db_item_set_volatile(G_DB_ITEM(comment), true); + g_preload_info_lock_comments(preload); + + comment = _g_preload_info_find_comment_at(preload, &target->addr); + + new = (comment == NULL); + + if (comment == NULL) + { + comment = g_db_comment_new_inlined(&target->addr, BLF_HAS_CODE, false); + g_db_item_set_volatile(G_DB_ITEM(comment), true); + + g_object_ref(G_OBJECT(comment)); + + _g_preload_info_add_comment(preload, comment); + + } + + g_preload_info_unlock_comments(preload); for (k = 0; k < target->count; k++) { - if (k > 0) + if (k > 0 || !new) g_db_comment_add_static_text(comment, " / "); g_db_comment_add_dynamic_text(comment, strdup(target->text[k])); } - g_preload_info_add_comment(preload, comment); + g_object_unref(G_OBJECT(comment)); } |