From f52924b480873b833669da47bdb8dff79054e67b Mon Sep 17 00:00:00 2001
From: Jilles Tjoelker <jilles@FreeBSD.org>
Date: Fri, 30 Aug 2013 10:45:02 +0000
Subject: [PATCH] sh: Cast -1 to pointer rather than pointer to variable of
 wrong type.

NEOF needs to be a non-null pointer distinct from valid union node pointers.
It is not dereferenced.

The new NEOF is much like SIG_ERR except that it is an object pointer
instead of a function pointer.

The variable tokpushback can now be static.
---
 bin/sh/parser.c | 2 +-
 bin/sh/parser.h | 6 ++----
 2 files changed, 3 insertions(+), 5 deletions(-)

diff --git a/bin/sh/parser.c b/bin/sh/parser.c
index 795e3ee54c16..b23f45581aa1 100644
--- a/bin/sh/parser.c
+++ b/bin/sh/parser.c
@@ -96,7 +96,7 @@ static struct heredoc *heredoclist;	/* list of here documents to read */
 static int doprompt;		/* if set, prompt the user */
 static int needprompt;		/* true if interactive and at start of line */
 static int lasttoken;		/* last token read */
-int tokpushback;		/* last token pushed back */
+static int tokpushback;		/* last token pushed back */
 static char *wordtext;		/* text of last word returned by readtoken */
 static int checkkwd;
 static struct nodelist *backquotelist;
diff --git a/bin/sh/parser.h b/bin/sh/parser.h
index b803f76dbe64..d500d2fd5b8b 100644
--- a/bin/sh/parser.h
+++ b/bin/sh/parser.h
@@ -68,11 +68,9 @@
 
 /*
  * NEOF is returned by parsecmd when it encounters an end of file.  It
- * must be distinct from NULL, so we use the address of a variable that
- * happens to be handy.
+ * must be distinct from NULL.
  */
-extern int tokpushback;
-#define NEOF ((union node *)&tokpushback)
+#define NEOF ((union node *)-1)
 extern int whichprompt;		/* 1 == PS1, 2 == PS2 */
 extern const char *const parsekwd[];