sh: make smark a static variable instead of a local in main()

We are modifying it after setjmp and then accessing it after the jump,
so it cannot be a local.

MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D40415
This commit is contained in:
Daniel Kolesa 2023-06-07 17:06:00 +02:00 committed by Jilles Tjoelker
parent 1320520ba4
commit 2178e8c27a

View File

@ -100,7 +100,13 @@ static char *find_dot_file(char *);
int
main(int argc, char *argv[])
{
struct stackmark smark = {0}, smark2;
/*
* As smark is accessed after a longjmp, it cannot be a local in main().
* The C standard specifies that the values of non-volatile local
* variables are unspecified after a jump if modified between the
* setjmp and longjmp.
*/
static struct stackmark smark, smark2;
volatile int state;
char *shinit;