[tracker/sam/check-if-bound] libtracker-sparql: Assert that values are bound in accessors
- From: Sam Thursfield <sthursfield src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/sam/check-if-bound] libtracker-sparql: Assert that values are bound in accessors
- Date: Wed, 27 May 2020 11:46:50 +0000 (UTC)
commit 179b46dec3401ace8b27d31bcd655f75cc78c74f
Author: Sam Thursfield <sam afuera me uk>
Date: Wed May 27 13:27:47 2020 +0200
libtracker-sparql: Assert that values are bound in accessors
I saw CRITICAL errors like this occuring when calling
tracker_sparql_cursor_get_double():
(org.gnome.Photos:17222): GLib-CRITICAL **: 13:13:55.663: g_ascii_strtod: assertion 'nptr != NULL'
failed
This doesn't give a good idea of the cause. Now the same
code produces this error:
(org.gnome.Photos:18736): Tracker-CRITICAL **: 13:29:19.328: tracker_sparql_cursor_real_get_double:
assertion 'tracker_sparql_cursor_real_is_bound (cursor, column)' failed
src/libtracker-sparql/tracker-cursor.c | 22 +++++++++++++++-------
1 file changed, 15 insertions(+), 7 deletions(-)
---
diff --git a/src/libtracker-sparql/tracker-cursor.c b/src/libtracker-sparql/tracker-cursor.c
index 5ded1f996..428fd97eb 100644
--- a/src/libtracker-sparql/tracker-cursor.c
+++ b/src/libtracker-sparql/tracker-cursor.c
@@ -55,12 +55,21 @@ tracker_sparql_cursor_init (TrackerSparqlCursor *cursor)
{
}
+static gboolean
+tracker_sparql_cursor_real_is_bound (TrackerSparqlCursor *cursor,
+ gint column)
+{
+ return tracker_sparql_cursor_get_value_type (cursor, column) != TRACKER_SPARQL_VALUE_TYPE_UNBOUND;
+}
+
static gint64
tracker_sparql_cursor_real_get_integer (TrackerSparqlCursor *cursor,
gint column)
{
const gchar *text;
+ g_return_val_if_fail (tracker_sparql_cursor_real_is_bound (cursor, column), 0);
+
text = tracker_sparql_cursor_get_string (cursor, column, NULL);
return g_ascii_strtoll (text, NULL, 10);
}
@@ -71,7 +80,10 @@ tracker_sparql_cursor_real_get_double (TrackerSparqlCursor *cursor,
{
const gchar *text;
+ g_return_val_if_fail (tracker_sparql_cursor_real_is_bound (cursor, column), 0);
+
text = tracker_sparql_cursor_get_string (cursor, column, NULL);
+
return g_ascii_strtod (text, NULL);
}
@@ -81,15 +93,11 @@ tracker_sparql_cursor_real_get_boolean (TrackerSparqlCursor *cursor,
{
const gchar *text;
+ g_return_val_if_fail (tracker_sparql_cursor_real_is_bound (cursor, column), FALSE);
+
text = tracker_sparql_cursor_get_string (cursor, column, NULL);
- return g_ascii_strcasecmp (text, "true") == 0;
-}
-static gboolean
-tracker_sparql_cursor_real_is_bound (TrackerSparqlCursor *cursor,
- gint column)
-{
- return tracker_sparql_cursor_get_value_type (cursor, column) != TRACKER_SPARQL_VALUE_TYPE_UNBOUND;
+ return g_ascii_strcasecmp (text, "true") == 0;
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]