From 46e98dfcc7563dd16a2db3b05bb3e803c27f40ea Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Thu, 5 Oct 2023 18:20:40 +0900 Subject: [PATCH] journal-file-util: do not fail when journal_file_set_offline() called more than once Previously, if journal_file_set_offline() is called twice with 'wait = false', the second call triggered segfaults, as the offline_state is OFFLINE_DONE, and journal_file_set_offline_thread_join() tries to call pthread_join() with NULL. --- src/shared/journal-file-util.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/shared/journal-file-util.c b/src/shared/journal-file-util.c index 90737fb8a85..ff32a1aac83 100644 --- a/src/shared/journal-file-util.c +++ b/src/shared/journal-file-util.c @@ -346,9 +346,14 @@ int journal_file_set_offline(JournalFile *f, bool wait) { /* Initiate a new offline. */ f->offline_state = OFFLINE_SYNCING; - if (wait) /* Without using a thread if waiting. */ + if (wait) { + /* Without using a thread if waiting. */ journal_file_set_offline_internal(f); - else { + + assert(f->offline_state == OFFLINE_DONE); + f->offline_state = OFFLINE_JOINED; + + } else { sigset_t ss, saved_ss; int k; -- 2.47.3