diff --git a/NEWS b/NEWS index 2a69b0be..9fcb57ed 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,20 @@ Command Line Interface `notmuch show` now supports --body=false and --include-html with --format=text +Notmuch 0.28.3 (2019-03-05) +=========================== + +Library +------- + +Fix a bug with the internal data structure _notmuch_string_map_t used +by message properties. + +Build System +------------ + +Serialize calls to sphinx-build to avoid race condition. +` Notmuch 0.28.2 (2019-02-17) =========================== diff --git a/bindings/python/notmuch/version.py b/bindings/python/notmuch/version.py index f376f6e6..8217eabf 100644 --- a/bindings/python/notmuch/version.py +++ b/bindings/python/notmuch/version.py @@ -1,3 +1,3 @@ # this file should be kept in sync with ../../../version -__VERSION__ = '0.28.2' +__VERSION__ = '0.28.3' SOVERSION = '5' diff --git a/debian/changelog b/debian/changelog index 9ed2547e..8afd985b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +notmuch (0.28.3-1) unstable; urgency=medium + + * New upstream bugfix release. + * Fix for bug in message property search + * Fix for race condition leading to (very) occasional build failures + when building the documentation. + + -- David Bremner Tue, 05 Mar 2019 15:39:09 -0400 + notmuch (0.28.2-1) unstable; urgency=medium * [notmuch-emacs] Invoke gpg from with --batch and --no-tty diff --git a/doc/Makefile.local b/doc/Makefile.local index f53b3702..bab3d0d2 100644 --- a/doc/Makefile.local +++ b/doc/Makefile.local @@ -41,6 +41,14 @@ ifeq ($(WITH_EMACS),1) $(DOCBUILDDIR)/.roff.stamp sphinx-html sphinx-texinfo: docstring.stamp endif +# Sequentialize the calls to sphinx-build to avoid races with +# reading/writing cached state. This uses GNU make specific +# "order-only" prerequisites. + +sphinx-html: | $(DOCBUILDDIR)/.roff.stamp +sphinx-texinfo: | sphinx-html +sphinx-info: | sphinx-texinfo + sphinx-html: $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(DOCBUILDDIR)/html diff --git a/lib/string-map.c b/lib/string-map.c index ad818207..a88404c7 100644 --- a/lib/string-map.c +++ b/lib/string-map.c @@ -106,7 +106,7 @@ _notmuch_string_map_sort (notmuch_string_map_t *map) map->sorted = true; } -static bool +static int string_cmp (const char *a, const char *b, bool exact) { if (exact) diff --git a/test/T610-message-property.sh b/test/T610-message-property.sh index 0abef824..53a0be3b 100755 --- a/test/T610-message-property.sh +++ b/test/T610-message-property.sh @@ -100,6 +100,41 @@ cat <<'EOF' >EXPECTED EOF test_expect_equal_file EXPECTED OUTPUT +test_begin_subtest "testing string map binary search (via message properties)" +cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} +{ + char *keys[] = {"a", "b", "c", "d", "e", NULL}; + for (int i=0; keys[i]; i++) + EXPECT0(notmuch_message_add_property (message, keys[i], keys[i])); + + for (int i=0; keys[i]; i++) { + EXPECT0(notmuch_message_get_property (message, keys[i], &val)); + printf("%s = %s\n", keys[i], val); + } + + for (int i=0; keys[i]; i++) { + EXPECT0(notmuch_message_remove_property (message, keys[i], keys[i])); + EXPECT0(notmuch_message_get_property (message, keys[i], &val)); + printf("%s = %s\n", keys[i], val == NULL ? "NULL" : val); + } +} +EOF +cat < EXPECTED +== stdout == +a = a +b = b +c = c +d = d +e = e +a = NULL +b = NULL +c = NULL +d = NULL +e = NULL +== stderr == +EOF +test_expect_equal_file EXPECTED OUTPUT + test_begin_subtest "notmuch_message_get_properties: empty list" cat c_head - c_tail <<'EOF' | test_C ${MAIL_DIR} { diff --git a/version b/version index a37255a8..b79f04f4 100644 --- a/version +++ b/version @@ -1 +1 @@ -0.28.2 +0.28.3