Modified: trunk/launchd/src/launchd_core_logic.c (23237 => 23238)
--- trunk/launchd/src/launchd_core_logic.c 2007-04-27 16:40:55 UTC (rev 23237)
+++ trunk/launchd/src/launchd_core_logic.c 2007-04-27 16:52:28 UTC (rev 23238)
@@ -5191,8 +5191,8 @@
pid_array_t l2l_pids = NULL;
mach_port_array_t l2l_ports = NULL;
mach_port_t reqport, rcvright;
- kern_return_t kr;
- jobmgr_t jmr;
+ kern_return_t kr = 1;
+ jobmgr_t jmr = NULL;
job_t j2;
if (getuid() == 0) {
@@ -5243,11 +5243,13 @@
job_t j_for_service = jobmgr_find_by_pid(jmr, l2l_pids[l2l_i], true);
struct machservice *ms;
- if (jobmgr_assumes(jmr, j_for_service != NULL)) {
- if ((ms = machservice_new(j_for_service, l2l_names[l2l_i], &l2l_ports[l2l_i], false))) {
- machservice_request_notifications(ms);
- }
+ if (!jobmgr_assumes(jmr, j_for_service != NULL)) {
+ goto out;
}
+
+ if ((ms = machservice_new(j_for_service, l2l_names[l2l_i], &l2l_ports[l2l_i], false))) {
+ machservice_request_notifications(ms);
+ }
}
kr = 0;
@@ -5262,6 +5264,9 @@
if (l2l_pids) {
mig_deallocate((vm_address_t)l2l_pids, l2l_pid_cnt * sizeof(l2l_pids[0]));
}
+ if (kr && jmr) {
+ jobmgr_shutdown(jmr);
+ }
return kr;
}