From 1f12a06f7cc2ae79a800fe3faed727513364091b Mon Sep 17 00:00:00 2001 From: Piotr Fusik Date: Mon, 13 Feb 2017 19:41:05 +0100 Subject: [PATCH] Disallow global variable declarations with an initializer. E.g. extern int i = 42; --- src/cc65/compile.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/cc65/compile.c b/src/cc65/compile.c index 9f1ab29f5..f01ddf6c5 100644 --- a/src/cc65/compile.c +++ b/src/cc65/compile.c @@ -144,17 +144,14 @@ static void Parse (void) ** ** - if it is not a typedef or function, ** - if we don't had a storage class given ("int i") - ** - if the storage class is explicitly specified as static, - ** - or if there is an initialization. + ** or the storage class is explicitly specified as static. ** ** This means that "extern int i;" will not get storage allocated. */ if ((Decl.StorageClass & SC_FUNC) != SC_FUNC && (Decl.StorageClass & SC_TYPEMASK) != SC_TYPEDEF && ((Spec.Flags & DS_DEF_STORAGE) != 0 || - (Decl.StorageClass & (SC_EXTERN|SC_STATIC)) == SC_STATIC || - ((Decl.StorageClass & SC_EXTERN) != 0 && - CurTok.Tok == TOK_ASSIGN))) { + (Decl.StorageClass & (SC_EXTERN|SC_STATIC)) == SC_STATIC)) { /* We will allocate storage */ Decl.StorageClass |= SC_STORAGE | SC_DEF;