summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2020-05-24 15:40:33 +0200
committerJean Felder <jean.felder@gmail.com>2020-08-21 15:05:10 +0000
commit602061a5ae31b5265831f291d7821da0998fd98c (patch)
treeeb56e202be1a6af1a7b9da90a688a68b0363d1a5
parentb0690cf696ef4e2e0e6435a1a4f3409e277cf081 (diff)
downloadgrilo-plugins-602061a5ae31b5265831f291d7821da0998fd98c.tar.gz
tracker3: Handle errors on cursor_next() in resolve callback
Shuffle things so we don't miss errors there.
-rw-r--r--src/tracker3/grl-tracker-source-api.c34
1 files changed, 17 insertions, 17 deletions
diff --git a/src/tracker3/grl-tracker-source-api.c b/src/tracker3/grl-tracker-source-api.c
index 8d38367..54c99f4 100644
--- a/src/tracker3/grl-tracker-source-api.c
+++ b/src/tracker3/grl-tracker-source-api.c
@@ -361,6 +361,23 @@ tracker_resolve_cb (GObject *source_object,
cursor = tracker_sparql_statement_execute_finish (statement,
result, &tracker_error);
+ if (!cursor)
+ goto end_operation;
+
+ if (tracker_sparql_cursor_next (cursor, NULL, &tracker_error)) {
+ /* Translate Sparql result into Grilo result */
+ for (col = 0 ; col < tracker_sparql_cursor_get_n_columns (cursor) ; col++) {
+ fill_grilo_media_from_sparql (GRL_TRACKER_SOURCE (rs->source),
+ rs->media, cursor, col);
+ }
+ set_title_from_filename (rs->media);
+
+ rs->callback (rs->source, rs->operation_id, rs->media, rs->user_data, NULL);
+ } else if (!tracker_error) {
+ rs->callback (rs->source, rs->operation_id, rs->media, rs->user_data, NULL);
+ }
+
+ end_operation:
if (tracker_error) {
GRL_WARNING ("Could not execute sparql resolve query : %s",
tracker_error->message);
@@ -374,25 +391,8 @@ tracker_resolve_cb (GObject *source_object,
g_error_free (tracker_error);
g_error_free (error);
-
- goto end_operation;
}
-
- if (tracker_sparql_cursor_next (cursor, NULL, NULL)) {
- /* Translate Sparql result into Grilo result */
- for (col = 0 ; col < tracker_sparql_cursor_get_n_columns (cursor) ; col++) {
- fill_grilo_media_from_sparql (GRL_TRACKER_SOURCE (rs->source),
- rs->media, cursor, col);
- }
- set_title_from_filename (rs->media);
-
- rs->callback (rs->source, rs->operation_id, rs->media, rs->user_data, NULL);
- } else {
- rs->callback (rs->source, rs->operation_id, rs->media, rs->user_data, NULL);
- }
-
- end_operation:
g_clear_object (&cursor);
grl_tracker_op_free (os);