Switch to side-by-side view
--- a/src/rcldb/rcldb_p.h +++ b/src/rcldb/rcldb_p.h @@ -30,6 +30,20 @@ } catch (...) { \ MSG = "Caught unknown xapian exception"; \ } + +#define XAPTRY(STMTTOTRY, XAPDB, ERSTR) \ + for (int tries = 0; tries < 2; tries++) { \ + try { \ + STMTTOTRY; \ + ERSTR.erase(); \ + break; \ + } catch (const Xapian::DatabaseModifiedError &e) { \ + ERSTR = e.get_msg(); \ + XAPDB.reopen(); \ + continue; \ + } XCATCHERROR(ERSTR); \ + break; \ + } class Query;