mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-02-24 06:54:13 +00:00
After making PATH readonly in a virtual subshell (without otherwise changing it, so the subshell is never forked), then the main shell would erroneously fork into a background process immediately after leaving the virtual subshell. This was caused by a bug in the forking workaround that prevents changes in PATH in a virtual subshell from clearing the parent shell's hash table. src/cmd/ksh93/sh/name.c: nv_putval(): - If we're either setting or restoring PATH, do an additional check for the NV_RDONLY flag, which means the function was told to ignore the variable's readonly state. It is told to ignore that when restoring the parent shell state after exiting a virtual subshell. If we don't fork then, we don't fork the parent shell. src/cmd/ksh93/tests/subshell.sh: - Add regression test verifying that no forking happens when making PATH readonly in a subshell. Fixes #30. |
||
---|---|---|
.. | ||
args.c | ||
arith.c | ||
array.c | ||
bash.c | ||
defs.c | ||
deparse.c | ||
env.c | ||
expand.c | ||
fault.c | ||
fcin.c | ||
init.c | ||
io.c | ||
jobs.c | ||
lex.c | ||
macro.c | ||
main.c | ||
name.c | ||
nvdisc.c | ||
nvtree.c | ||
nvtype.c | ||
parse.c | ||
path.c | ||
pmain.c | ||
shcomp.c | ||
streval.c | ||
string.c | ||
subshell.c | ||
suid_exec.c | ||
tdump.c | ||
timers.c | ||
trestore.c | ||
waitevent.c | ||
xec.c |