On Sun, Mar 12 2017, David Bremner <david@tethera.net> wrote: > For reasons not completely understood at this time, gmime (as of > 2.6.22) is returning a date before 1900 on bad date input. Since this > confuses some other software, we clamp such dates to 0, > i.e. 1970-01-01. > --- > lib/message.cc | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/lib/message.cc b/lib/message.cc > index 007f1171..8a8a25b4 100644 > --- a/lib/message.cc > +++ b/lib/message.cc > @@ -1034,10 +1034,15 @@ _notmuch_message_set_header_values (notmuch_message_t *message, > > /* GMime really doesn't want to see a NULL date, so protect its > * sensibilities. */ > - if (date == NULL || *date == '\0') > + if (date == NULL || *date == '\0') { > time_value = 0; "Too bad" we already do this time_value = 0, otherwise I'd suggested -2111111111 $ perl -le 'print scalar localtime -2111111111' Sat Feb 7 21:54:38 1903 That is something where Julian calendar is also in 20th century ;) > - else > + } else { > time_value = g_mime_utils_header_decode_date (date, NULL); > + /* > + * Workaround for https://bugzilla.gnome.org/show_bug.cgi?id=779923 > + */ > + time_value = (time_value < 0) ? 0 : time_value; Although the above probably realizes as..., I'd propose (IMO for clarity) if (time_value < 0) time_value = 0; Anyway, LGTM. Tomi Btw: I Added notmuch show --format=json '*' >&6 to the test script, and it printed: [[[{"id": "msg-001@notmuch-test-suite", "match": true, "excluded": false, "filename": ["/home/too/vc/ext/notmuch/test/tmp.T111-x/mail/msg-001"], "timestamp": 2085892096, "date_relative": "1899-12-31", "tags": ["inbox", "unread"], "headers": {"Subject": "Test message #1", "From": "Notmuch Test Suite <test_suite@notmuchmail.org>", "To": "Notmuch Test Suite <test_suite@notmuchmail.org>", "Date": "Sun, 31 Dec 1899 00:00:00 +0000"}, "body": [{"id": 1, "content-type": "text/plain", "content": "This is just a test message (#1)\n"}]}, []]]] (... which one can see I just pasted to a new file... ;) $ perl -le 'print scalar localtime 2085892096' Wed Feb 6 08:28:16 2036 So, it looks like we store the large negative time_value to a 32-bit signed integer... > + } > > message->doc.add_value (NOTMUCH_VALUE_TIMESTAMP, > Xapian::sortable_serialise (time_value)); > -- > 2.11.0 > > _______________________________________________ > notmuch mailing list > notmuch@notmuchmail.org > https://notmuchmail.org/mailman/listinfo/notmuch