Modified: trunk/launchd/src/launchd_core_logic.c (23592 => 23593)
--- trunk/launchd/src/launchd_core_logic.c 2008-04-08 16:37:06 UTC (rev 23592)
+++ trunk/launchd/src/launchd_core_logic.c 2008-04-08 20:37:28 UTC (rev 23593)
@@ -3447,9 +3447,6 @@
head_later = 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, head_later, root_jobmgr) != -1)) {
char time_string[100];
size_t time_string_len;
@@ -5867,9 +5864,6 @@
} else if (inval) {
if (j->start_interval == 0) {
runtime_add_weak_ref();
- } else {
- /* Workaround 5225889 */
- job_assumes(j, kevent_mod((uintptr_t)&j->start_interval, EVFILT_TIMER, EV_DELETE, 0, 0, j) != -1);
}
j->start_interval = inval;
job_assumes(j, kevent_mod((uintptr_t)&j->start_interval, EVFILT_TIMER, EV_ADD, NOTE_SECONDS, j->start_interval, j) != -1);
Modified: trunk/launchd/src/launchd_runtime.c (23592 => 23593)
--- trunk/launchd/src/launchd_runtime.c 2008-04-08 16:37:06 UTC (rev 23592)
+++ trunk/launchd/src/launchd_runtime.c 2008-04-08 20:37:28 UTC (rev 23593)
@@ -840,6 +840,12 @@
case EVFILT_READ:
case EVFILT_WRITE:
break;
+ case EVFILT_TIMER:
+ /* Workaround 5225889 */
+ if (flags & EV_ADD) {
+ kevent_mod(ident, EVFILT_TIMER, EV_DELETE, 0, 0, NULL);
+ }
+ /* fall through */
default:
flags |= EV_CLEAR;
break;