diff options
Diffstat (limited to 'src/libtracker-sparql')
-rw-r--r-- | src/libtracker-sparql/core/tracker-db-interface-sqlite.c | 4 | ||||
-rw-r--r-- | src/libtracker-sparql/core/tracker-sparql.c | 14 | ||||
-rw-r--r-- | src/libtracker-sparql/remote/tracker-http-module.c | 12 |
3 files changed, 19 insertions, 11 deletions
diff --git a/src/libtracker-sparql/core/tracker-db-interface-sqlite.c b/src/libtracker-sparql/core/tracker-db-interface-sqlite.c index 2aa493ca9..6b3482435 100644 --- a/src/libtracker-sparql/core/tracker-db-interface-sqlite.c +++ b/src/libtracker-sparql/core/tracker-db-interface-sqlite.c @@ -1639,13 +1639,15 @@ function_sparql_print_value (sqlite3_context *context, sqlite3_result_value (context, argv[0]); } else if (prop_type == TRACKER_PROPERTY_TYPE_DATE) { const gchar *value, *end; - int len = -1; + gsize len; value = sqlite3_value_text (argv[0]); /* Drop time data if we are given a xsd:dateTime as a xsd:date */ end = strchr (value, 'T'); if (end) len = end - value; + else + len = strlen (value); sqlite3_result_text (context, g_strndup (value, len), diff --git a/src/libtracker-sparql/core/tracker-sparql.c b/src/libtracker-sparql/core/tracker-sparql.c index 745ed46b3..064102a20 100644 --- a/src/libtracker-sparql/core/tracker-sparql.c +++ b/src/libtracker-sparql/core/tracker-sparql.c @@ -9920,9 +9920,11 @@ init_literal_token_from_gvalue (TrackerToken *resolved_out, const GValue *value) { if (G_VALUE_TYPE (value) == G_TYPE_STRING) { - tracker_token_literal_init (resolved_out, - g_value_get_string (value), - -1); + const gchar *str; + + str = g_value_get_string (value); + if (str) + tracker_token_literal_init (resolved_out, str, -1); } else if (G_VALUE_TYPE (value) == G_TYPE_INT64) { gchar *str; str = g_strdup_printf ("%" G_GINT64_FORMAT, @@ -9942,8 +9944,10 @@ init_literal_token_from_gvalue (TrackerToken *resolved_out, gchar *str; str = tracker_date_format_iso8601 (g_value_get_boxed (value)); - tracker_token_literal_init (resolved_out, str, -1); - g_free (str); + if (str) { + tracker_token_literal_init (resolved_out, str, -1); + g_free (str); + } } else if (G_VALUE_TYPE (value) != G_TYPE_INVALID) { g_assert_not_reached (); } diff --git a/src/libtracker-sparql/remote/tracker-http-module.c b/src/libtracker-sparql/remote/tracker-http-module.c index ed87cd1b7..a74ec3d37 100644 --- a/src/libtracker-sparql/remote/tracker-http-module.c +++ b/src/libtracker-sparql/remote/tracker-http-module.c @@ -240,11 +240,8 @@ handle_write_in_thread (GTask *task, count = g_input_stream_read (request->istream, buffer, sizeof (buffer), cancellable, &error); - if (count < 0) { - g_task_return_error (task, error); - g_object_unref (task); + if (count < 0) break; - } soup_message_body_append (message_body, SOUP_MEMORY_COPY, @@ -257,7 +254,12 @@ handle_write_in_thread (GTask *task, g_input_stream_close (request->istream, cancellable, NULL); soup_message_body_complete (message_body); - g_task_return_boolean (task, TRUE); + + if (error) + g_task_return_error (task, error); + else + g_task_return_boolean (task, TRUE); + g_object_unref (task); } |