diff options
Diffstat (limited to 'plugins/lnxsyscalls')
| -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));      } | 
