On Wed, Jan 22 2014, David Bremner <david@tethera.net> wrote: > Without this patch, the example code in the header docs crashes for certain > invalid queries (see id:871u00oimv.fsf@approx.mit.edu) > --- Looks good and seems to work: $ make ... $ notmuch show foo.. A Xapian exception occurred performing query: Unknown range operation Query string was: foo.. zsh: segmentation fault notmuch show foo.. $ ./notmuch show foo.. A Xapian exception occurred performing query: Unknown range operation Query string was: foo.. (i.e. no "segmentation fault" in the latter) Tomi > lib/notmuch.h | 2 ++ > lib/query.cc | 3 +++ > 2 files changed, 5 insertions(+) > > diff --git a/lib/notmuch.h b/lib/notmuch.h > index 02604c5..68896ae 100644 > --- a/lib/notmuch.h > +++ b/lib/notmuch.h > @@ -802,6 +802,8 @@ notmuch_query_destroy (notmuch_query_t *query); > * valid object. Whereas when this function returns FALSE, > * notmuch_threads_get will return NULL. > * > + * If passed a NULL pointer, this function returns FALSE > + * > * See the documentation of notmuch_query_search_threads for example > * code showing how to iterate over a notmuch_threads_t object. > */ > diff --git a/lib/query.cc b/lib/query.cc > index ec60e2e..60ff8bd 100644 > --- a/lib/query.cc > +++ b/lib/query.cc > @@ -462,6 +462,9 @@ notmuch_threads_valid (notmuch_threads_t *threads) > { > unsigned int doc_id; > > + if (! threads) This format seems to be consistent with surrounding code (vs. threads == NULL) > + return FALSE; > + > while (threads->doc_id_pos < threads->doc_ids->len) { > doc_id = g_array_index (threads->doc_ids, unsigned int, > threads->doc_id_pos); > -- > 1.8.5.2