forked from external/yambar
Don’t loop 65536 FDs, trying to close them, when fork+exec:ing
All FDs should now have the CLOEXEC flag set, and thus there’s no longer needed to manually loop “all” possible FDs and (trying to) close them. Note: the alsa module (alsalib, actually) is “racy” - while booting up, it temporarily opens the asoundrc file without CLOEXEC. If e.g. the script module starts its script inside this window, it’ll have a leaked FD. Not much we can do about it though :/ Closes #169
This commit is contained in:
parent
068c25d8f6
commit
fd014dc33b
3 changed files with 3 additions and 15 deletions
|
@ -34,6 +34,9 @@
|
|||
* i3: fixed “missing workspace indicator” (_err: modules/i3.c:94:
|
||||
workspace reply/event without 'name' and/or 'output', and/or 'focus'
|
||||
properties_).
|
||||
* Slow/laggy behavior when quickly spawning many `on-click` handlers,
|
||||
e.g. when handling mouse wheel events
|
||||
(https://codeberg.org/dnkl/yambar/issues/169).
|
||||
|
||||
|
||||
### Security
|
||||
|
|
|
@ -458,16 +458,6 @@ execute_script(struct module *mod)
|
|||
close(comm_pipe[1]);
|
||||
comm_pipe[1] = -1;
|
||||
|
||||
/* Close *all* other FDs */
|
||||
for (int i = STDERR_FILENO + 1; i < 65536; i++) {
|
||||
if (i == exec_pipe[1]) {
|
||||
/* Needed for error reporting. Automatically closed
|
||||
* when execvp() succeeds */
|
||||
continue;
|
||||
}
|
||||
close(i);
|
||||
}
|
||||
|
||||
execvp(m->path, argv);
|
||||
|
||||
fail:
|
||||
|
|
|
@ -277,11 +277,6 @@ exposable_default_on_mouse(struct exposable *exposable, struct bar *bar,
|
|||
goto fail;
|
||||
}
|
||||
|
||||
/* Close *all* other FDs (e.g. script modules' FDs) */
|
||||
for (int i = STDERR_FILENO + 1; i < 65536; i++)
|
||||
if (i != pipe_fds[1])
|
||||
close(i);
|
||||
|
||||
execvp(argv[0], argv);
|
||||
|
||||
fail:
|
||||
|
|
Loading…
Add table
Reference in a new issue