[tracker/fix-deprecations: 3/4] Fix GValue memory handling



commit 156750f01d9df2879df18aac425296a3324d68a4
Author: Carlos Garnacho <carlos lanedo com>
Date:   Fri Sep 27 18:22:10 2013 +0200

    Fix GValue memory handling

 src/libtracker-data/tracker-data-update.c |   13 ++++++-------
 1 files changed, 6 insertions(+), 7 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-update.c b/src/libtracker-data/tracker-data-update.c
index 9017989..a01d197 100644
--- a/src/libtracker-data/tracker-data-update.c
+++ b/src/libtracker-data/tracker-data-update.c
@@ -1309,6 +1309,7 @@ static gboolean
 value_set_add_value (GArray *value_set,
                      GValue *value)
 {
+       GValue gvalue_copy = { 0 };
        gint i;
 
        g_return_val_if_fail (G_VALUE_TYPE (value), FALSE);
@@ -1323,7 +1324,9 @@ value_set_add_value (GArray *value_set,
                }
        }
 
-       g_array_append_val (value_set, value);
+       g_value_init (&gvalue_copy, G_VALUE_TYPE (value));
+       g_value_copy (value, &gvalue_copy);
+       g_array_append_val (value_set, gvalue_copy);
 
        return TRUE;
 }
@@ -1372,7 +1375,7 @@ get_property_values (TrackerProperty *property)
 
        multiple_values = tracker_property_get_multiple_values (property);
 
-       old_values = g_array_sized_new (FALSE, TRUE, sizeof (GValue*), multiple_values ? 4 : 1);
+       old_values = g_array_sized_new (FALSE, TRUE, sizeof (GValue), multiple_values ? 4 : 1);
        g_array_set_clear_func (old_values, (GDestroyNotify) g_value_unset);
        g_hash_table_insert (resource_buffer->predicates, g_object_ref (property), old_values);
 
@@ -1411,8 +1414,6 @@ get_property_values (TrackerProperty *property)
                                tracker_db_cursor_get_value (cursor, 0, &gvalue);
 
                                if (G_VALUE_TYPE (&gvalue)) {
-                                       GValue *v;
-
                                        if (tracker_property_get_data_type (property) == 
TRACKER_PROPERTY_TYPE_DATETIME) {
                                                gdouble time;
 
@@ -1427,9 +1428,7 @@ get_property_values (TrackerProperty *property)
                                                tracker_date_time_set (&gvalue, time, 0);
                                        }
 
-                                       g_value_copy (&gvalue, v);
-                                       g_array_append_val (old_values, v);
-                                       g_value_unset (&gvalue);
+                                       g_array_append_val (old_values, gvalue);
                                }
                        }
                        g_object_unref (cursor);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]