Revision
23593
Author
zarzycki@apple.com
Date
2008-04-08 13:37:28 -0700 (Tue, 08 Apr 2008)

Log Message

<rdar://problem/5849623> Workaround 5225889 consistently

Modified Paths

Diff

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;