]> git.sur5r.net Git - cc65/commitdiff
Fix the check for constant static local data, which was wrong when the data
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 27 May 2010 19:47:13 +0000 (19:47 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 27 May 2010 19:47:13 +0000 (19:47 +0000)
was an array. It should go into RODATA, not DATA.

git-svn-id: svn://svn.cc65.org/cc65/trunk@4669 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/locals.c

index be5c09970c5f427225057cb64840665706adf621..710d05e33a34a7442bbaee93f432246fd2c08378 100644 (file)
@@ -355,8 +355,12 @@ static unsigned ParseStaticDecl (Declaration* Decl, unsigned* SC)
     /* Static data */
     if (CurTok.Tok == TOK_ASSIGN) {
 
-        /* Initialization ahead, switch to data segment and define a label */
-        if (IsQualConst (Decl->Type)) {
+        /* Initialization ahead, switch to data segment and define a label.
+         * For arrays, we need to check the elements of the array for 
+         * constness, not the array itself.
+         */
+        if (IsQualConst (Decl->Type) ||
+            (IsTypeArray (Decl->Type) && IsQualConst (GetElementType (Decl->Type)))) {
             SymData = AllocLabel (g_userodata);
         } else {
             SymData = AllocLabel (g_usedata);