diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2018-11-17 11:39:50 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2018-11-17 14:43:08 +0100 |
commit | f81c4cd057ec3caf6bde242d7885f9561297d587 (patch) | |
tree | 441e537de3479926eef78a4d60383175fa28c630 | |
parent | a0f4c09c6b077ce7b2f896da572474acc1867d12 (diff) | |
download | tracker-f81c4cd057ec3caf6bde242d7885f9561297d587.tar.gz |
libtracker-bus: Make error clearer
The data != null check in get_string() really happens because of
fetching values on a finished or not yet started cursor, so make
it clearer to reason about.
This is of course a programming error.
-rw-r--r-- | src/libtracker-bus/tracker-bus-fd-cursor.vala | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/libtracker-bus/tracker-bus-fd-cursor.vala b/src/libtracker-bus/tracker-bus-fd-cursor.vala index d42a6133f..751c65349 100644 --- a/src/libtracker-bus/tracker-bus-fd-cursor.vala +++ b/src/libtracker-bus/tracker-bus-fd-cursor.vala @@ -27,11 +27,13 @@ class Tracker.Bus.FDCursor : Tracker.Sparql.Cursor { internal int* types; internal char* data; internal string[] variable_names; + internal bool cursor_finished; public FDCursor (char* buffer, ulong buffer_size, string[] variable_names) { this.buffer = buffer; this.buffer_size = buffer_size; this.variable_names = variable_names; + this.cursor_finished = true; _n_columns = variable_names.length; } @@ -63,7 +65,7 @@ class Tracker.Bus.FDCursor : Tracker.Sparql.Cursor { } public override unowned string? get_string (int column, out long length = null) - requires (data != null) { + requires (cursor_finished == false) { unowned string str = null; if (column >= n_columns) { @@ -96,6 +98,8 @@ class Tracker.Bus.FDCursor : Tracker.Sparql.Cursor { } if (buffer_index >= buffer_size) { + cursor_finished = true; + data = null; return false; } @@ -118,6 +122,7 @@ class Tracker.Bus.FDCursor : Tracker.Sparql.Cursor { last_offset = buffer_read_int (); data = buffer + buffer_index; + cursor_finished = false; buffer_index += last_offset + 1; @@ -132,5 +137,6 @@ class Tracker.Bus.FDCursor : Tracker.Sparql.Cursor { public override void rewind () { buffer_index = 0; data = buffer; + cursor_finished = false; } } |