Patch from Larry Doolittle to set values to static variables that live in the

bss at runtime, since sh.c can call sh.c, which causes these variables to not
be set to their defaults as god intended.
 -Erik
This commit is contained in:
Eric Andersen 2001-01-05 19:34:52 +00:00
parent eb60d8bcd1
commit b0970d4fed
3 changed files with 45 additions and 6 deletions

17
lash.c
View File

@ -73,7 +73,7 @@ static const unsigned int IF_TRUE_CONTEXT=0x2;
static const unsigned int IF_FALSE_CONTEXT=0x4;
static const unsigned int THEN_EXP_CONTEXT=0x8;
static const unsigned int ELSE_EXP_CONTEXT=0x10;
unsigned int shell_context = 0;
unsigned int shell_context;
@ -185,7 +185,7 @@ static struct built_in_command bltins_forking[] = {
};
static char *cwd;
static char *local_pending_command = NULL;
static char *local_pending_command;
static struct jobset job_list = { NULL, NULL };
static int argc;
static char **argv;
@ -1629,6 +1629,19 @@ int shell_main(int argc_l, char **argv_l)
argc = argc_l;
argv = argv_l;
shell_context = 0;
cwd=NULL;
#ifdef BB_FEATURE_STANDALONE_SHELL
/* These variables need re-initializing when recursing */
local_pending_command = NULL;
job_list.head = NULL;
job_list.fg = NULL;
#ifdef BB_FEATURE_SH_ENVIRONMENT
last_bg_pid=-1;
last_return_code=-1;
show_x_trace=FALSE;
#endif
#endif
if (argv[0] && argv[0][0] == '-') {
FILE *input;

17
sh.c
View File

@ -73,7 +73,7 @@ static const unsigned int IF_TRUE_CONTEXT=0x2;
static const unsigned int IF_FALSE_CONTEXT=0x4;
static const unsigned int THEN_EXP_CONTEXT=0x8;
static const unsigned int ELSE_EXP_CONTEXT=0x10;
unsigned int shell_context = 0;
unsigned int shell_context;
@ -185,7 +185,7 @@ static struct built_in_command bltins_forking[] = {
};
static char *cwd;
static char *local_pending_command = NULL;
static char *local_pending_command;
static struct jobset job_list = { NULL, NULL };
static int argc;
static char **argv;
@ -1629,6 +1629,19 @@ int shell_main(int argc_l, char **argv_l)
argc = argc_l;
argv = argv_l;
shell_context = 0;
cwd=NULL;
#ifdef BB_FEATURE_STANDALONE_SHELL
/* These variables need re-initializing when recursing */
local_pending_command = NULL;
job_list.head = NULL;
job_list.fg = NULL;
#ifdef BB_FEATURE_SH_ENVIRONMENT
last_bg_pid=-1;
last_return_code=-1;
show_x_trace=FALSE;
#endif
#endif
if (argv[0] && argv[0][0] == '-') {
FILE *input;

View File

@ -73,7 +73,7 @@ static const unsigned int IF_TRUE_CONTEXT=0x2;
static const unsigned int IF_FALSE_CONTEXT=0x4;
static const unsigned int THEN_EXP_CONTEXT=0x8;
static const unsigned int ELSE_EXP_CONTEXT=0x10;
unsigned int shell_context = 0;
unsigned int shell_context;
@ -185,7 +185,7 @@ static struct built_in_command bltins_forking[] = {
};
static char *cwd;
static char *local_pending_command = NULL;
static char *local_pending_command;
static struct jobset job_list = { NULL, NULL };
static int argc;
static char **argv;
@ -1629,6 +1629,19 @@ int shell_main(int argc_l, char **argv_l)
argc = argc_l;
argv = argv_l;
shell_context = 0;
cwd=NULL;
#ifdef BB_FEATURE_STANDALONE_SHELL
/* These variables need re-initializing when recursing */
local_pending_command = NULL;
job_list.head = NULL;
job_list.fg = NULL;
#ifdef BB_FEATURE_SH_ENVIRONMENT
last_bg_pid=-1;
last_return_code=-1;
show_x_trace=FALSE;
#endif
#endif
if (argv[0] && argv[0][0] == '-') {
FILE *input;