summaryrefslogtreecommitdiff
path: root/variable.c
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2008-01-26 13:51:14 +0000
committerEli Zaretskii <eliz@gnu.org>2008-01-26 13:51:14 +0000
commit8d5b3d429888da22e38d4f62fd7ae0c15e9980fe (patch)
tree1fa8ed1b3b60dbdfcab512aa369c91c8b435f8dd /variable.c
parent2750526aa54034a80cd266e9d62540fba700822c (diff)
downloadgunmake-8d5b3d429888da22e38d4f62fd7ae0c15e9980fe.tar.gz
(target_environment): Don't use shell_var if its `value' field is NULL.
Diffstat (limited to 'variable.c')
-rw-r--r--variable.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/variable.c b/variable.c
index 25491c4..3dc8a22 100644
--- a/variable.c
+++ b/variable.c
@@ -918,15 +918,18 @@ target_environment (struct file *file)
break;
case v_noexport:
- /* If this is the SHELL variable and it's not exported, then
- add the value from our original environment. */
- if (streq (v->name, "SHELL"))
- {
- extern struct variable shell_var;
- v = &shell_var;
- break;
- }
- continue;
+ {
+ /* If this is the SHELL variable and it's not exported,
+ then add the value from our original environment, if
+ the original environment defined a value for SHELL. */
+ extern struct variable shell_var;
+ if (streq (v->name, "SHELL") && shell_var.value)
+ {
+ v = &shell_var;
+ break;
+ }
+ continue;
+ }
case v_ifset:
if (v->origin == o_default)