Revision: 23276 http://trac.macosforge.org/projects/launchd/changeset/23276 Author: zarzycki@apple.com Date: 2007-06-08 14:11:59 -0700 (Fri, 08 Jun 2007) Log Message: ----------- Small bug fixes. Modified Paths: -------------- trunk/launchd/src/launchd_core_logic.c Modified: trunk/launchd/src/launchd_core_logic.c =================================================================== --- trunk/launchd/src/launchd_core_logic.c 2007-06-07 23:22:31 UTC (rev 23275) +++ trunk/launchd/src/launchd_core_logic.c 2007-06-08 21:11:59 UTC (rev 23276) @@ -2727,9 +2727,8 @@ void calendarinterval_setalarm(job_t j, struct calendarinterval *ci) { - static time_t last_list_head_when; struct calendarinterval *ci_iter, *ci_prev = NULL; - time_t later; + time_t later, head_later; later = cronemu(ci->when.tm_mon, ci->when.tm_mday, ci->when.tm_hour, ci->when.tm_min); @@ -2764,13 +2763,12 @@ } } - if (last_list_head_when == LIST_FIRST(&sorted_calendar_events)->when_next) { - return; - } + head_later = LIST_FIRST(&sorted_calendar_events)->when_next; - last_list_head_when = LIST_FIRST(&sorted_calendar_events)->when_next; + /* Workaround 5225889 */ + kevent_mod((uintptr_t)&sorted_calendar_events, EVFILT_TIMER, EV_DELETE, 0, 0, root_jobmgr); - if (job_assumes(j, kevent_mod((uintptr_t)&sorted_calendar_events, EVFILT_TIMER, EV_ADD, NOTE_ABSOLUTE|NOTE_SECONDS, last_list_head_when, root_jobmgr) != -1)) { + if (job_assumes(j, kevent_mod((uintptr_t)&sorted_calendar_events, EVFILT_TIMER, EV_ADD, NOTE_ABSOLUTE|NOTE_SECONDS, head_later, root_jobmgr) != -1)) { char time_string[100]; size_t time_string_len; @@ -3156,7 +3154,7 @@ struct calendarinterval *ci = LIST_FIRST(&sorted_calendar_events); time_t now = time(NULL); - if (ci && ci->when_next < now) { + if (ci && (ci->when_next < now)) { jobmgr_assumes(root_jobmgr, kill(getpid(), SIGUSR1) != -1); } } @@ -3170,7 +3168,7 @@ LIST_FOREACH_SAFE(ci, &sorted_calendar_events, global_sle, ci_next) { job_t j = ci->job; - if (ci->when_next >= now) { + if (ci->when_next > now) { break; } @@ -3453,8 +3451,8 @@ return false; } - if (j->start_pending && j->start_time == 0) { - job_log(j, LOG_DEBUG, "KeepAlive check: job needs to run at least once."); + if (j->start_pending) { + job_log(j, LOG_DEBUG, "KeepAlive check: Pent-up non-IPC launch criteria."); return true; }
participants (1)
-
source_changes@macosforge.org