diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2021-02-21 19:08:48 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2021-02-21 20:29:04 +0100 |
commit | 3d5259a81961e5308d4dfff8d657f792cbaaf887 (patch) | |
tree | 3b6cfd0c85c0fcb57f83265be1e02e5467f7e863 | |
parent | 8967ceb088733ae4d5a301218e5b363319e6fc5f (diff) | |
download | tracker-3d5259a81961e5308d4dfff8d657f792cbaaf887.tar.gz |
libtracker-data: Propagate errors from tracker_data_resource_unref_all()
These errors are ignored here. Ensure they are propagated upwards.
-rw-r--r-- | src/libtracker-data/tracker-data-update.c | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/src/libtracker-data/tracker-data-update.c b/src/libtracker-data/tracker-data-update.c index c0b51e180..6bbbeabe0 100644 --- a/src/libtracker-data/tracker-data-update.c +++ b/src/libtracker-data/tracker-data-update.c @@ -1072,9 +1072,10 @@ tracker_data_resource_unref (TrackerData *data, } /* Only applies to multivalued properties */ -static void -tracker_data_resource_unref_all (TrackerData *data, - TrackerProperty *property) +static gboolean +tracker_data_resource_unref_all (TrackerData *data, + TrackerProperty *property, + GError **error) { GArray *old_values; gint i; @@ -1082,7 +1083,9 @@ tracker_data_resource_unref_all (TrackerData *data, g_assert (tracker_property_get_multiple_values (property) == TRUE); g_assert (tracker_property_get_data_type (property) == TRACKER_PROPERTY_TYPE_RESOURCE); - old_values = get_old_property_values (data, property, NULL); + old_values = get_old_property_values (data, property, error); + if (!old_values) + return FALSE; for (i = 0; i < old_values->len; i++) { GValue *value; @@ -1090,6 +1093,8 @@ tracker_data_resource_unref_all (TrackerData *data, value = &g_array_index (old_values, GValue, i); tracker_data_resource_unref (data, g_value_get_int64 (value), TRUE); } + + return TRUE; } static void @@ -2422,8 +2427,10 @@ delete_all_helper (TrackerData *data, cache_delete_all_values (data, tracker_property_get_table_name (property), tracker_property_get_name (property)); - if (tracker_property_get_data_type (property) == TRACKER_PROPERTY_TYPE_RESOURCE) - tracker_data_resource_unref_all (data, property); + if (tracker_property_get_data_type (property) == TRACKER_PROPERTY_TYPE_RESOURCE) { + if (!tracker_data_resource_unref_all (data, property, error)) + return FALSE; + } } else { value = &g_array_index (old_values, GValue, 0); cache_delete_value (data, @@ -2535,8 +2542,10 @@ delete_single_valued (TrackerData *data, cache_delete_all_values (data, tracker_property_get_table_name (field), tracker_property_get_name (field)); - if (tracker_property_get_data_type (field) == TRACKER_PROPERTY_TYPE_RESOURCE) - tracker_data_resource_unref_all (data, field); + if (tracker_property_get_data_type (field) == TRACKER_PROPERTY_TYPE_RESOURCE) { + if (!tracker_data_resource_unref_all (data, field, error)) + return FALSE; + } } else if (!multiple_values) { GError *inner_error = NULL; GArray *old_values; @@ -2792,8 +2801,10 @@ tracker_data_update_statement (TrackerData *data, cache_delete_all_values (data, tracker_property_get_table_name (property), tracker_property_get_name (property)); - if (tracker_property_get_data_type (property) == TRACKER_PROPERTY_TYPE_RESOURCE) - tracker_data_resource_unref_all (data, property); + if (tracker_property_get_data_type (property) == TRACKER_PROPERTY_TYPE_RESOURCE) { + if (!tracker_data_resource_unref_all (data, property, error)) + return; + } } else { if (!resource_buffer_switch (data, graph, subject, error)) return; |