aboutsummaryrefslogtreecommitdiff
path: root/coreutils/touch.c
diff options
context:
space:
mode:
authorRon Yorston <rmy@pobox.com>2021-11-01 12:27:58 +0000
committerRon Yorston <rmy@pobox.com>2021-11-01 12:27:58 +0000
commit42a3e960faaff1458c7ca3c138d1847b1a104089 (patch)
treecad70d723a2fd743984d9a3255b01b2de90562e2 /coreutils/touch.c
parent0acd7c7984e680f2e352ed43556b2f4cc8da2fbb (diff)
downloadbusybox-w32-42a3e960faaff1458c7ca3c138d1847b1a104089.tar.gz
busybox-w32-42a3e960faaff1458c7ca3c138d1847b1a104089.tar.bz2
busybox-w32-42a3e960faaff1458c7ca3c138d1847b1a104089.zip
win32: UCRT environment hack
Commit 5b48ca53b (win32: pass NULL to spawnve, not environ) was an attempt to fix a problem seen in busybox-w32 built against the UCRT runtime. It was effective for applets like 'time' which pass an unmodified environment to their children but not the shell which needs to alter the environment to include exported shell variables. A peculiar feature of the problem was that it only manifested when the BusyBox binary was run by GNU make. Like the shell, make needs to modify the environment passed to its children. GNU make therefore creates a new environment block which is passed to CreateProcess. As was the case with the previous commit passing a NULL pointer instead made the problem go away. It was also noted that failures only occurred when the child program was built against UCRT. Whether make was linked against UCRT or MVSCRT made no difference. It appears that programs linked against UCRT are unable to handle their parent passing a non-default environment block. It also appears that setting an environment variable early in program execution perturbs the environment block sufficiently to avoid the problem. YMMV. (GitHub issue #234)
Diffstat (limited to 'coreutils/touch.c')
0 files changed, 0 insertions, 0 deletions