From: Lennart Poettering Date: Mon, 28 May 2018 19:32:03 +0000 (+0200) Subject: core: move destruction of old time event sources to manager_setup_time_change() X-Git-Tag: v239~137^2~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=7feedd18fa57ba42426dfffd702dfc78ea0c6d7a;p=thirdparty%2Fsystemd.git core: move destruction of old time event sources to manager_setup_time_change() It's a bit prettier that day as the function won't silently overwrite any possibly pre-initialized field, and destroy it right before we allocate a new event source. --- diff --git a/src/core/manager.c b/src/core/manager.c index f5664eaa791..3a2674ce938 100644 --- a/src/core/manager.c +++ b/src/core/manager.c @@ -364,6 +364,9 @@ static int manager_setup_time_change(Manager *m) { if (m->test_run_flags) return 0; + m->time_change_event_source = sd_event_source_unref(m->time_change_event_source); + m->time_change_fd = safe_close(m->time_change_fd); + /* Uses TFD_TIMER_CANCEL_ON_SET to get notifications whenever * CLOCK_REALTIME makes a jump relative to CLOCK_MONOTONIC */ @@ -2558,10 +2561,7 @@ static int manager_dispatch_time_change_fd(sd_event_source *source, int fd, uint LOG_MESSAGE("Time has been changed")); /* Restart the watch */ - m->time_change_event_source = sd_event_source_unref(m->time_change_event_source); - m->time_change_fd = safe_close(m->time_change_fd); - - manager_setup_time_change(m); + (void) manager_setup_time_change(m); HASHMAP_FOREACH(u, m->units, i) if (UNIT_VTABLE(u)->time_change)