Revision: 23623 http://trac.macosforge.org/projects/launchd/changeset/23623 Author: zarzycki@apple.com Date: 2008-05-09 13:05:28 -0700 (Fri, 09 May 2008) Log Message: ----------- <rdar://problem/5915392> Drag and drop no longer works from Finder to TextEdit - problem in bootstrap_look_up2? Modified Paths: -------------- trunk/launchd/src/libbootstrap.c Modified: trunk/launchd/src/libbootstrap.c =================================================================== --- trunk/launchd/src/libbootstrap.c 2008-05-07 22:15:06 UTC (rev 23622) +++ trunk/launchd/src/libbootstrap.c 2008-05-09 20:05:28 UTC (rev 23623) @@ -173,11 +173,16 @@ static mach_port_t prev_bp; static mach_port_t prev_sp; static name_t prev_name; + bool per_pid_lookup = flags & BOOTSTRAP_PER_PID_SERVICE; kern_return_t kr = 0; mach_port_t puc; pthread_mutex_lock(&bslu2_lock); + if (per_pid_lookup) { + goto skip_cache; + } + if (prev_sp) { if ((bp == prev_bp) && (strncmp(prev_name, service_name, sizeof(name_t)) == 0) && (mach_port_mod_refs(mach_task_self(), prev_sp, MACH_PORT_RIGHT_SEND, 1) == 0)) { @@ -189,6 +194,7 @@ } } +skip_cache: if ((kr = vproc_mig_look_up2(bp, service_name, sp, target_pid, flags)) != VPROC_ERR_TRY_PER_USER) { goto out; } @@ -201,7 +207,8 @@ mach_port_deallocate(mach_task_self(), puc); out: - if (kr == 0 && prev_sp == 0 && mach_port_mod_refs(mach_task_self(), *sp, MACH_PORT_RIGHT_SEND, 1) == 0) { + if (!per_pid_lookup && kr == 0 && prev_sp == 0 + && mach_port_mod_refs(mach_task_self(), *sp, MACH_PORT_RIGHT_SEND, 1) == 0) { /* We're going to hold on to a send right as a MRU cache */ prev_bp = bp; prev_sp = *sp;
participants (1)
-
source_changes@macosforge.org