From 6aaca6a1aff7e3049556ad17cedaf4c31021fe5f Mon Sep 17 00:00:00 2001 From: Alan Mishchenko Date: Thu, 20 Nov 2025 22:54:05 -0800 Subject: [PATCH] Fixing timeout in kissat. --- src/sat/kissat/terminate.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/sat/kissat/terminate.h b/src/sat/kissat/terminate.h index 853adecd1..2d85966f3 100644 --- a/src/sat/kissat/terminate.h +++ b/src/sat/kissat/terminate.h @@ -16,6 +16,21 @@ static inline bool kissat_terminated (kissat *solver, int bit, const char *name, const char *file, long lineno, const char *fun) { KISSAT_assert (0 <= bit), KISSAT_assert (bit < 64); +#if defined(COVERAGE) + if (!solver->termination.flagged) { + int (*terminate) (void *) = solver->termination.terminate; + void *state = (void *) solver->termination.state; + if (terminate && terminate (state)) + solver->termination.flagged = ~(uint64_t) 0; + } +#else + if (!solver->termination.flagged) { + int (*terminate) (void *) = solver->termination.terminate; + void *state = (void *) solver->termination.state; + if (terminate && terminate (state)) + solver->termination.flagged = true; + } +#endif #ifdef COVERAGE const uint64_t mask = (uint64_t) 1 << bit; if (!(solver->termination.flagged & mask))