diff options
Diffstat (limited to 'src/analysis/db/item.c')
-rw-r--r-- | src/analysis/db/item.c | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/src/analysis/db/item.c b/src/analysis/db/item.c index c59ef64..227d99f 100644 --- a/src/analysis/db/item.c +++ b/src/analysis/db/item.c @@ -159,9 +159,6 @@ static void g_db_item_finalize(GDbItem *item) exit_rle_string(&item->author); exit_rle_string(&item->tool); - if (item->label != NULL) - free(item->label); - G_OBJECT_CLASS(g_db_item_parent_class)->finalize(G_OBJECT(item)); } @@ -224,6 +221,8 @@ void g_db_item_set_server_side(GDbItem *item) gint g_db_item_cmp(GDbItem *a, GDbItem *b, bool with) { gint result; /* Bilan à retourner */ + char *label_a; /* Etiquette de l'élément A */ + char *label_b; /* Etiquette de l'élément B */ if (with) result = cmp_timestamp(&a->timestamp, &b->timestamp); @@ -234,7 +233,16 @@ gint g_db_item_cmp(GDbItem *a, GDbItem *b, bool with) result = cmp_timestamp(&a->created, &b->created); if (result == 0) - result = strcmp(g_db_item_get_label(a), g_db_item_get_label(b)); + { + label_a = g_db_item_get_label(a); + label_b = g_db_item_get_label(b); + + result = strcmp(label_a, label_b); + + free(label_a); + free(label_b); + + } return result; @@ -449,21 +457,23 @@ bool g_db_item_cancel(GDbItem *item, GLoadedBinary *binary) * * * Description : Décrit l'élément de collection en place. * * * -* Retour : Chaîne de caractère correspondante. * +* Retour : Description humaine mise en place à libérer après usage. * * * * Remarques : - * * * ******************************************************************************/ -const char *g_db_item_get_label(GDbItem *item) +char *g_db_item_get_label(GDbItem *item) { - if (item->label == NULL) - { - G_DB_ITEM_GET_CLASS(item)->build_label(item); - assert(item->label != NULL); - } + char *result; /* Description à retourner */ + GDbItemClass *class; /* Classe de l'instance */ + + class = G_DB_ITEM_GET_CLASS(item); - return item->label; + result = class->build_label(item); + assert(result != NULL); + + return result; } |