summaryrefslogtreecommitdiff
path: root/src/analysis/db/item.c
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2019-09-11 22:08:42 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2019-09-11 22:08:42 (GMT)
commit1c2949f6828b995c7b9f8feba8fd7214f52f8f4d (patch)
tree0bdff13f6ac8d87725d6783a2f1ecc7511426cd1 /src/analysis/db/item.c
parent83faef9c8f78b20cb031af686f763cfb215cf9d7 (diff)
Built suitable dynamic labels for bookmarks.
Diffstat (limited to 'src/analysis/db/item.c')
-rw-r--r--src/analysis/db/item.c34
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;
}