Skip to content

Fix crash by handling exception thrown by GlassTable::set_overwritten

Ahmad Samir requested to merge work/ahmad/xapian-db-crash into master

Xapian::Enquire::get_mset ultimately calls GlassTable::block_to_cursor, which could throw Xapian::DatabaseModifiedError if the database has been modified/deviated too much since it was opened for searching; handle that case by trying to call reopen on the database (as per the upstream error message[1]), then query it again, if that fails just return.

Also handle one other exception, Xapian::DatabaseCorruptError; this has been reported in [2].

Use QByteArray::toStdString when calling the Xapian::Database ctor.

[1] https://xapian.org/docs/sourcedoc/html/glass__table_8cc_source.html#l00288 [2] https://bugs.kde.org/show_bug.cgi?id=363928#c9

BUG: 401865 CCBUG: 363928

Edited by Ahmad Samir

Merge request reports